git.iko.soy/typeable/pandoc
on master help sign in
Moved stateLiterateHaskell to readerLiterateHaskell in Options.
commit856aa8c244b86a51d4229bf7c5f3799d231570f7 authorJohn MacFarlane <jgm@berkeley.edu> dateWed 25 Jul 2012, 20:20 (14 years ago) parent1dba82f
6 files changed+39−29
Benchmark.hs+7−5 src/Tests/Readers/Markdown.hs+2−1 src/Text/Pandoc.hs+9−3 src/Text/Pandoc/Options.hs+16−14 src/Text/Pandoc/Parsing.hs+1−3 src/pandoc.hs+4−3
Benchmark.hs+7−5
@@ -3,6 +3,7 @@ import Text.Pandoc.Shared (readDataFile, normalize)
33import Criterion.Main
44import Data.List (isSuffixOf)
55import Text.JSON.Generic
6+import Data.Default
67
78readerBench :: Pandoc
89 -> (String, ParserState -> String -> Pandoc)
@@ -18,10 +19,11 @@ readerBench doc (name, reader) =
1819 getLength (Pandoc (Meta a b c) d) =
1920 length a + length b + length c + length d
2021 in bench (name ++ " reader") $ whnf (getLength .
21− reader defaultParserState{ stateSmart = True
22− , stateStandalone = True
23− , stateLiterateHaskell =
24− "+lhs" `isSuffixOf` name }) inp
22+ reader def{ stateOptions = def{
23+ readerSmart = True
24+ , readerLiterateHaskell = "+lhs" `isSuffixOf` name
25+ }
26+ }) inp
2527
2628writerBench :: Pandoc
2729 -> (String, WriterOptions -> Pandoc -> String)
@@ -38,7 +40,7 @@ normalizeBench doc = [ bench "normalize - with" $ nf (encodeJSON . normalize) do
3840
3941main = do
4042 inp <- readDataFile (Just ".") "README"
41− let ps = defaultParserState{ stateSmart = True }
43+ let ps = defaultParserState{ stateOptions = def{ readerSmart = True }}
4244 let doc = readMarkdown ps inp
4345 let readerBs = map (readerBench doc) readers
4446 let writers' = [(n,w) | (n, PureStringWriter w) <- writers]
src/Tests/Readers/Markdown.hs+2−1
@@ -93,7 +93,8 @@ tests = [ testGroup "inline code"
9393 =?> para (note (para "See [^1]"))
9494 ]
9595 , testGroup "lhs"
96− [ test (readMarkdown defaultParserState{stateLiterateHaskell = True})
96+ [ test (readMarkdown def{stateOptions =
97+ def{readerLiterateHaskell = True}})
9798 "inverse bird tracks and html" $
9899 "> a\n\n< b\n\n<div>\n"
99100 =?> codeBlockWith ("",["sourceCode","literate","haskell"],[]) "a"
src/Text/Pandoc.hs+9−3
@@ -170,16 +170,22 @@ readers = [("native" , \_ -> readNative)
170170 ,("json" , \_ -> decodeJSON)
171171 ,("markdown" , readMarkdown)
172172 ,("markdown+lhs" , \st ->
173− readMarkdown st{ stateLiterateHaskell = True})
173+ readMarkdown st{ stateOptions =
174+ let oldopts = stateOptions st
175+ in oldopts{ readerLiterateHaskell = True} })
174176 ,("rst" , readRST)
175177 ,("rst+lhs" , \st ->
176− readRST st{ stateLiterateHaskell = True})
178+ readRST st{ stateOptions =
179+ let oldopts = stateOptions st
180+ in oldopts{ readerLiterateHaskell = True} })
177181 ,("docbook" , readDocBook)
178182 ,("textile" , readTextile) -- TODO : textile+lhs
179183 ,("html" , readHtml)
180184 ,("latex" , readLaTeX)
181185 ,("latex+lhs" , \st ->
182− readLaTeX st{ stateLiterateHaskell = True})
186+ readLaTeX st{ stateOptions =
187+ let oldopts = stateOptions st
188+ in oldopts{ readerLiterateHaskell = True} })
183189 ]
184190
185191data Writer = PureStringWriter (WriterOptions -> Pandoc -> String)
src/Text/Pandoc/Options.hs+16−14
@@ -51,24 +51,26 @@ data Extension = Footnotes
5151 deriving (Show, Read, Enum, Eq, Ord, Bounded)
5252
5353data ReaderOptions = ReaderOptions{
54− readerExtensions :: Set Extension -- ^ Syntax extensions
55− , readerSmart :: Bool -- ^ Smart punctuation
56− , readerStrict :: Bool -- ^ FOR TRANSITION ONLY
57− , readerParseRaw :: Bool -- ^ Parse raw HTML, LaTeX
58− , readerColumns :: Int -- ^ Number of columns in terminal
59− , readerTabStop :: Int -- ^ Tab stop
60− , readerOldDashes :: Bool -- ^ Use pandoc <= 1.8.2.1 behavior
54+ readerExtensions :: Set Extension -- ^ Syntax extensions
55+ , readerSmart :: Bool -- ^ Smart punctuation
56+ , readerStrict :: Bool -- ^ FOR TRANSITION ONLY
57+ , readerParseRaw :: Bool -- ^ Parse raw HTML, LaTeX
58+ , readerColumns :: Int -- ^ Number of columns in terminal
59+ , readerTabStop :: Int -- ^ Tab stop
60+ , readerOldDashes :: Bool -- ^ Use pandoc <= 1.8.2.1 behavior
6161 -- in parsing dashes; -- is em-dash;
6262 -- - before numerial is en-dash
63+ , readerLiterateHaskell :: Bool -- ^ Interpret as literate Haskell
6364} deriving (Show, Read)
6465
6566instance Default ReaderOptions
6667 where def = ReaderOptions{
67− readerExtensions = Set.fromList [minBound..maxBound]
68− , readerSmart = False
69− , readerStrict = False
70− , readerParseRaw = False
71− , readerColumns = 80
72− , readerTabStop = 4
73− , readerOldDashes = False
68+ readerExtensions = Set.fromList [minBound..maxBound]
69+ , readerSmart = False
70+ , readerStrict = False
71+ , readerParseRaw = False
72+ , readerColumns = 80
73+ , readerTabStop = 4
74+ , readerOldDashes = False
75+ , readerLiterateHaskell = False
7476 }
src/Text/Pandoc/Parsing.hs+1−3
@@ -395,7 +395,7 @@ failIfStrict = getOption readerStrict >>= guard . not
395395
396396-- | Fail unless we're in literate haskell mode.
397397failUnlessLHS :: Parsec [tok] ParserState ()
398−failUnlessLHS = getState >>= guard . stateLiterateHaskell
398+failUnlessLHS = getOption readerLiterateHaskell >>= guard
399399
400400-- | Parses backslash, then applies character parser.
401401escaped :: Parsec [Char] st Char -- ^ Parser for character to escape
@@ -698,7 +698,6 @@ data ParserState = ParserState
698698 stateTitle :: [Inline], -- ^ Title of document
699699 stateAuthors :: [[Inline]], -- ^ Authors of document
700700 stateDate :: [Inline], -- ^ Date of document
701− stateLiterateHaskell :: Bool, -- ^ Treat input as literate haskell
702701 stateHeaderTable :: [HeaderType], -- ^ Ordered list of header types used
703702 stateIndentedCodeClasses :: [String], -- ^ Classes to use for indented code blocks
704703 stateNextExample :: Int, -- ^ Number of next example
@@ -726,7 +725,6 @@ defaultParserState =
726725 stateTitle = [],
727726 stateAuthors = [],
728727 stateDate = [],
729− stateLiterateHaskell = False,
730728 stateHeaderTable = [],
731729 stateIndentedCodeClasses = [],
732730 stateNextExample = 1,
src/pandoc.hs+4−3
@@ -936,9 +936,7 @@ main = do
936936 then "."
937937 else takeDirectory (head sources)
938938
939− let startParserState = def{ stateLiterateHaskell = "+lhs" `isSuffixOf` readerName' ||
940− lhsExtension sources,
941− stateCitations = map CSL.refId refs,
939+ let startParserState = def{ stateCitations = map CSL.refId refs,
942940 stateOptions = def{
943941 readerStrict = strict
944942 , readerSmart = smart || (texLigatures &&
@@ -947,6 +945,9 @@ main = do
947945 , readerColumns = columns
948946 , readerTabStop = tabStop
949947 , readerOldDashes = oldDashes
948+ , readerLiterateHaskell =
949+ "+lhs" `isSuffixOf` readerName' ||
950+ lhsExtension sources
950951 },
951952 stateIndentedCodeClasses = codeBlockClasses,
952953 stateApplyMacros = not laTeXOutput