Moved stateLiterateHaskell to readerLiterateHaskell in Options.
This commit is contained in:
parent
1dba82f25e
commit
856aa8c244
6 changed files with 39 additions and 29 deletions
12
Benchmark.hs
12
Benchmark.hs
|
@ -3,6 +3,7 @@ import Text.Pandoc.Shared (readDataFile, normalize)
|
|||
import Criterion.Main
|
||||
import Data.List (isSuffixOf)
|
||||
import Text.JSON.Generic
|
||||
import Data.Default
|
||||
|
||||
readerBench :: Pandoc
|
||||
-> (String, ParserState -> String -> Pandoc)
|
||||
|
@ -18,10 +19,11 @@ readerBench doc (name, reader) =
|
|||
getLength (Pandoc (Meta a b c) d) =
|
||||
length a + length b + length c + length d
|
||||
in bench (name ++ " reader") $ whnf (getLength .
|
||||
reader defaultParserState{ stateSmart = True
|
||||
, stateStandalone = True
|
||||
, stateLiterateHaskell =
|
||||
"+lhs" `isSuffixOf` name }) inp
|
||||
reader def{ stateOptions = def{
|
||||
readerSmart = True
|
||||
, readerLiterateHaskell = "+lhs" `isSuffixOf` name
|
||||
}
|
||||
}) inp
|
||||
|
||||
writerBench :: Pandoc
|
||||
-> (String, WriterOptions -> Pandoc -> String)
|
||||
|
@ -38,7 +40,7 @@ normalizeBench doc = [ bench "normalize - with" $ nf (encodeJSON . normalize) do
|
|||
|
||||
main = do
|
||||
inp <- readDataFile (Just ".") "README"
|
||||
let ps = defaultParserState{ stateSmart = True }
|
||||
let ps = defaultParserState{ stateOptions = def{ readerSmart = True }}
|
||||
let doc = readMarkdown ps inp
|
||||
let readerBs = map (readerBench doc) readers
|
||||
let writers' = [(n,w) | (n, PureStringWriter w) <- writers]
|
||||
|
|
|
@ -93,7 +93,8 @@ tests = [ testGroup "inline code"
|
|||
=?> para (note (para "See [^1]"))
|
||||
]
|
||||
, testGroup "lhs"
|
||||
[ test (readMarkdown defaultParserState{stateLiterateHaskell = True})
|
||||
[ test (readMarkdown def{stateOptions =
|
||||
def{readerLiterateHaskell = True}})
|
||||
"inverse bird tracks and html" $
|
||||
"> a\n\n< b\n\n<div>\n"
|
||||
=?> codeBlockWith ("",["sourceCode","literate","haskell"],[]) "a"
|
||||
|
|
|
@ -170,16 +170,22 @@ readers = [("native" , \_ -> readNative)
|
|||
,("json" , \_ -> decodeJSON)
|
||||
,("markdown" , readMarkdown)
|
||||
,("markdown+lhs" , \st ->
|
||||
readMarkdown st{ stateLiterateHaskell = True})
|
||||
readMarkdown st{ stateOptions =
|
||||
let oldopts = stateOptions st
|
||||
in oldopts{ readerLiterateHaskell = True} })
|
||||
,("rst" , readRST)
|
||||
,("rst+lhs" , \st ->
|
||||
readRST st{ stateLiterateHaskell = True})
|
||||
readRST st{ stateOptions =
|
||||
let oldopts = stateOptions st
|
||||
in oldopts{ readerLiterateHaskell = True} })
|
||||
,("docbook" , readDocBook)
|
||||
,("textile" , readTextile) -- TODO : textile+lhs
|
||||
,("html" , readHtml)
|
||||
,("latex" , readLaTeX)
|
||||
,("latex+lhs" , \st ->
|
||||
readLaTeX st{ stateLiterateHaskell = True})
|
||||
readLaTeX st{ stateOptions =
|
||||
let oldopts = stateOptions st
|
||||
in oldopts{ readerLiterateHaskell = True} })
|
||||
]
|
||||
|
||||
data Writer = PureStringWriter (WriterOptions -> Pandoc -> String)
|
||||
|
|
|
@ -51,24 +51,26 @@ data Extension = Footnotes
|
|||
deriving (Show, Read, Enum, Eq, Ord, Bounded)
|
||||
|
||||
data ReaderOptions = ReaderOptions{
|
||||
readerExtensions :: Set Extension -- ^ Syntax extensions
|
||||
, readerSmart :: Bool -- ^ Smart punctuation
|
||||
, readerStrict :: Bool -- ^ FOR TRANSITION ONLY
|
||||
, readerParseRaw :: Bool -- ^ Parse raw HTML, LaTeX
|
||||
, readerColumns :: Int -- ^ Number of columns in terminal
|
||||
, readerTabStop :: Int -- ^ Tab stop
|
||||
, readerOldDashes :: Bool -- ^ Use pandoc <= 1.8.2.1 behavior
|
||||
readerExtensions :: Set Extension -- ^ Syntax extensions
|
||||
, readerSmart :: Bool -- ^ Smart punctuation
|
||||
, readerStrict :: Bool -- ^ FOR TRANSITION ONLY
|
||||
, readerParseRaw :: Bool -- ^ Parse raw HTML, LaTeX
|
||||
, readerColumns :: Int -- ^ Number of columns in terminal
|
||||
, readerTabStop :: Int -- ^ Tab stop
|
||||
, readerOldDashes :: Bool -- ^ Use pandoc <= 1.8.2.1 behavior
|
||||
-- in parsing dashes; -- is em-dash;
|
||||
-- - before numerial is en-dash
|
||||
, readerLiterateHaskell :: Bool -- ^ Interpret as literate Haskell
|
||||
} deriving (Show, Read)
|
||||
|
||||
instance Default ReaderOptions
|
||||
where def = ReaderOptions{
|
||||
readerExtensions = Set.fromList [minBound..maxBound]
|
||||
, readerSmart = False
|
||||
, readerStrict = False
|
||||
, readerParseRaw = False
|
||||
, readerColumns = 80
|
||||
, readerTabStop = 4
|
||||
, readerOldDashes = False
|
||||
readerExtensions = Set.fromList [minBound..maxBound]
|
||||
, readerSmart = False
|
||||
, readerStrict = False
|
||||
, readerParseRaw = False
|
||||
, readerColumns = 80
|
||||
, readerTabStop = 4
|
||||
, readerOldDashes = False
|
||||
, readerLiterateHaskell = False
|
||||
}
|
||||
|
|
|
@ -395,7 +395,7 @@ failIfStrict = getOption readerStrict >>= guard . not
|
|||
|
||||
-- | Fail unless we're in literate haskell mode.
|
||||
failUnlessLHS :: Parsec [tok] ParserState ()
|
||||
failUnlessLHS = getState >>= guard . stateLiterateHaskell
|
||||
failUnlessLHS = getOption readerLiterateHaskell >>= guard
|
||||
|
||||
-- | Parses backslash, then applies character parser.
|
||||
escaped :: Parsec [Char] st Char -- ^ Parser for character to escape
|
||||
|
@ -698,7 +698,6 @@ data ParserState = ParserState
|
|||
stateTitle :: [Inline], -- ^ Title of document
|
||||
stateAuthors :: [[Inline]], -- ^ Authors of document
|
||||
stateDate :: [Inline], -- ^ Date of document
|
||||
stateLiterateHaskell :: Bool, -- ^ Treat input as literate haskell
|
||||
stateHeaderTable :: [HeaderType], -- ^ Ordered list of header types used
|
||||
stateIndentedCodeClasses :: [String], -- ^ Classes to use for indented code blocks
|
||||
stateNextExample :: Int, -- ^ Number of next example
|
||||
|
@ -726,7 +725,6 @@ defaultParserState =
|
|||
stateTitle = [],
|
||||
stateAuthors = [],
|
||||
stateDate = [],
|
||||
stateLiterateHaskell = False,
|
||||
stateHeaderTable = [],
|
||||
stateIndentedCodeClasses = [],
|
||||
stateNextExample = 1,
|
||||
|
|
|
@ -936,9 +936,7 @@ main = do
|
|||
then "."
|
||||
else takeDirectory (head sources)
|
||||
|
||||
let startParserState = def{ stateLiterateHaskell = "+lhs" `isSuffixOf` readerName' ||
|
||||
lhsExtension sources,
|
||||
stateCitations = map CSL.refId refs,
|
||||
let startParserState = def{ stateCitations = map CSL.refId refs,
|
||||
stateOptions = def{
|
||||
readerStrict = strict
|
||||
, readerSmart = smart || (texLigatures &&
|
||||
|
@ -947,6 +945,9 @@ main = do
|
|||
, readerColumns = columns
|
||||
, readerTabStop = tabStop
|
||||
, readerOldDashes = oldDashes
|
||||
, readerLiterateHaskell =
|
||||
"+lhs" `isSuffixOf` readerName' ||
|
||||
lhsExtension sources
|
||||
},
|
||||
stateIndentedCodeClasses = codeBlockClasses,
|
||||
stateApplyMacros = not laTeXOutput
|
||||
|
|
Loading…
Add table
Reference in a new issue