@@ -29,6 +29,7 @@ Parses command-line options and calls the appropriate readers and
31module Main where
31module Main where
32+import Text.JSON.Generic (encodeJSON, decodeJSON)
32import Text.Pandoc
33import Text.Pandoc
33import Text.Pandoc.S5 (s5HeaderIncludes)
34import Text.Pandoc.S5 (s5HeaderIncludes)
34import Text.Pandoc.Shared ( tabFilter, ObfuscationMethod (..), readDataFile,
35import Text.Pandoc.Shared ( tabFilter, ObfuscationMethod (..), readDataFile,
@@ -83,6 +84,7 @@ wrapWords c = wrap' c c where
83-- | Association list of formats and readers.
84-- | Association list of formats and readers.
84readers :: [(String, ParserState -> String -> Pandoc)]
85readers :: [(String, ParserState -> String -> Pandoc)]
85readers = [("native" , readPandoc)
86readers = [("native" , readPandoc)
86 ,("markdown" , readMarkdown)
88 ,("markdown" , readMarkdown)
87 ,("markdown+lhs" , readMarkdown)
89 ,("markdown+lhs" , readMarkdown)
88 ,("rst" , readRST)
90 ,("rst" , readRST)
@@ -97,9 +99,18 @@ readers = [("native" , readPandoc)
97readPandoc :: ParserState -> String -> Pandoc
99readPandoc :: ParserState -> String -> Pandoc
98readPandoc _ = read
100readPandoc _ = read
102+-- | Reader for JSON version of Pandoc AST.
103+readJSON :: ParserState -> String -> Pandoc
104+readJSON _ = decodeJSON
106+-- | Writer for JSON version of Pandoc AST.
107+writeJSON :: WriterOptions -> Pandoc -> String
108+writeJSON _ = encodeJSON
100-- | Association list of formats and writers.
110-- | Association list of formats and writers.
101writers :: [ ( String, WriterOptions -> Pandoc -> String ) ]
111writers :: [ ( String, WriterOptions -> Pandoc -> String ) ]
102writers = [("native" , writeNative)
112writers = [("native" , writeNative)
113+ ,("json" , writeJSON)
103 ,("html" , writeHtmlString)
114 ,("html" , writeHtmlString)
104 ,("html+lhs" , writeHtmlString)
115 ,("html+lhs" , writeHtmlString)
105 ,("s5" , writeHtmlString)
116 ,("s5" , writeHtmlString)