]> git.wincent.com - docvim.git/blob - lib/Text/Docvim/Util.hs
More misguided refactoring
[docvim.git] / lib / Text / Docvim / Util.hs
1 -- | Functions to facilitate automated and manual testing.
2 module Text.Docvim.Util ( compileUnits
3                         , p
4                         , parseUnit
5                         , pm
6                         , pp
7                         , ppm
8                         , ppv
9                         , pv
10                         ) where
11
12 import Text.Docvim.AST
13 import Text.Docvim.Compile
14 import Text.Docvim.Parse
15 import Text.Docvim.Printer.Markdown
16 import Text.Docvim.Printer.Vim
17 import Text.Parsec
18 import Text.Show.Pretty
19
20 -- | Parse a string containing a translation unit.
21 parseUnit :: String -> Either ParseError Node
22 parseUnit = runParser unit () "(eval)"
23
24 -- | Parse and compile a list of strings containing a translation units.
25 compileUnits :: [String] -> Either ParseError Node
26 compileUnits inputs = do
27   parsed <- mapM parseUnit inputs
28   return $ compile parsed
29
30 -- | Convenience function: Parse and compile a list of strings containing
31 -- translation units, but always returns a string even in the case of an error.
32 p :: [String] -> String
33 p inputs = case compileUnits inputs of
34     Left err -> show err
35     Right ast -> ppShow ast
36
37 -- | Pretty-prints the result of parsing and compiling an input string.
38 --
39 -- To facilitate quick testing in the REPL; example:
40 --
41 --     pp "unlet g:var"
42 pp :: String -> IO ()
43 pp input = putStrLn $ p [input]
44
45 -- | Parse and compile a list of input strings into Vim help format.
46 pv :: [String] -> String
47 pv inputs = case compileUnits inputs of
48     Left err -> show err
49     Right ast -> vimHelp ast
50
51 -- | Pretty-prints the result of parsing and compiling an input string and
52 -- transforming into Vim help format.
53 --
54 -- For logging in the REPL.
55 ppv :: String -> IO ()
56 ppv input = putStr $ pv [input]
57
58 -- | Parse and compile a list of input strings into Markdown help format.
59 pm :: [String] -> String
60 pm inputs = case compileUnits inputs of
61     Left err -> show err
62     Right ast -> markdown ast
63
64 -- | Pretty-prints the result of parsing and compiling an input string and
65 -- transforming into Markdown format.
66 --
67 -- For logging in the REPL.
68 ppm :: String -> IO ()
69 ppm input = putStr $ pm [input]