git.iko.soy/typeable/pandoc
on master help sign in
Moved escape and nullBlock parsers from ParserCombinators/Pandoc
e15fd3bfiddlosopher
src/Text/Pandoc/Shared.hs+18−3
@@ -54,6 +54,8 @@ module Text.Pandoc.Shared (
54 QuoteContext (..),
54 QuoteContext (..),
55 ParserState (..),
55 ParserState (..),
56 defaultParserState,
56 defaultParserState,
57+ nullBlock,
58+ escaped,
57 -- * Native format prettyprinting
59 -- * Native format prettyprinting
58 prettyPandoc,
60 prettyPandoc,
59 -- * Pandoc block list processing
61 -- * Pandoc block list processing
@@ -68,10 +70,8 @@ module Text.Pandoc.Shared (
68 refsMatch,
70 refsMatch,
69 ) where
71 ) where
70import Text.Pandoc.Definition
72import Text.Pandoc.Definition
71−import Text.ParserCombinators.Parsec as Parsec
73+import Text.ParserCombinators.Parsec
72import Text.Pandoc.Entities ( decodeEntities, escapeStringForXML )
74import Text.Pandoc.Entities ( decodeEntities, escapeStringForXML )
73−import Text.PrettyPrint.HughesPJ as PP ( text, char, (<>),
74− ($$), nest, Doc, isEmpty )
75import Data.Char ( toLower, ord )
75import Data.Char ( toLower, ord )
76import Data.List ( find, groupBy, isPrefixOf )
76import Data.List ( find, groupBy, isPrefixOf )
77
77
@@ -172,6 +172,21 @@ defaultParserState =
172 stateColumns = 80,
172 stateColumns = 80,
173 stateHeaderTable = [] }
173 stateHeaderTable = [] }
174
174
175+-- | Parses a character and returns 'Null' (so that the parser can move on
176+-- if it gets stuck).
177+nullBlock :: GenParser Char st Block
178+nullBlock = do
179+ anyChar
180+ return Null
181+
182+-- | Parses backslash, then applies character parser.
183+escaped :: GenParser Char st Char -- ^ Parser for character to escape
184+ -> GenParser Char st Inline
185+escaped parser = try (do
186+ char '\\'
187+ result <- parser
188+ return (Str [result]))
189+
175-- | Indent string as a block.
190-- | Indent string as a block.
176indentBy :: Int -- ^ Number of spaces to indent the block
191indentBy :: Int -- ^ Number of spaces to indent the block
177 -> Int -- ^ Number of spaces (rel to block) to indent first line
192 -> Int -- ^ Number of spaces (rel to block) to indent first line
src/Text/ParserCombinators/Pandoc.hs−16
@@ -44,7 +44,6 @@ module Text.ParserCombinators.Pandoc (
44 lineClump
44 lineClump
45 ) where
45 ) where
46import Text.ParserCombinators.Parsec
46import Text.ParserCombinators.Parsec
47−import Text.Pandoc.Definition
48import Text.Pandoc.Shared
47import Text.Pandoc.Shared
49import Data.Char ( toUpper, toLower )
48import Data.Char ( toUpper, toLower )
50
49
@@ -52,13 +51,6 @@ import Data.Char ( toUpper, toLower )
52anyLine :: GenParser Char st [Char]
51anyLine :: GenParser Char st [Char]
53anyLine = manyTill anyChar (newline <|> (do{eof; return '\n'}))
52anyLine = manyTill anyChar (newline <|> (do{eof; return '\n'}))
54
53
55−-- | Parses a character and returns 'Null' (so that the parser can move on
56−-- if it gets stuck).
57−nullBlock :: GenParser Char st Block
58−nullBlock = do
59− anyChar
60− return Null
61−
62-- | Parses a space or tab.
54-- | Parses a space or tab.
63spaceChar :: CharParser st Char
55spaceChar :: CharParser st Char
64spaceChar = oneOf " \t"
56spaceChar = oneOf " \t"
@@ -77,14 +69,6 @@ blankline = try (do
77blanklines :: GenParser Char st [Char]
69blanklines :: GenParser Char st [Char]
78blanklines = try (many1 blankline)
70blanklines = try (many1 blankline)
79
71
80−-- | Parses backslash, then applies character parser.
81−escaped :: GenParser Char st Char -- ^ Parser for character to escape
82− -> GenParser Char st Inline
83−escaped parser = try (do
84− char '\\'
85− result <- parser
86− return (Str [result]))
87−
88-- | Parses material enclosed between start and end parsers.
72-- | Parses material enclosed between start and end parsers.
89enclosed :: GenParser Char st t -- ^ start parser
73enclosed :: GenParser Char st t -- ^ start parser
90 -> GenParser Char st end -- ^ end parser
74 -> GenParser Char st end -- ^ end parser