diff options
-rw-r--r-- | src/Text/Pandoc/Shared.hs | 21 | ||||
-rw-r--r-- | src/Text/ParserCombinators/Pandoc.hs | 16 |
2 files changed, 18 insertions, 19 deletions
diff --git a/src/Text/Pandoc/Shared.hs b/src/Text/Pandoc/Shared.hs index e231163eb..00060f9e9 100644 --- a/src/Text/Pandoc/Shared.hs +++ b/src/Text/Pandoc/Shared.hs @@ -54,6 +54,8 @@ module Text.Pandoc.Shared ( QuoteContext (..), ParserState (..), defaultParserState, + nullBlock, + escaped, -- * Native format prettyprinting prettyPandoc, -- * Pandoc block list processing @@ -68,10 +70,8 @@ module Text.Pandoc.Shared ( refsMatch, ) where import Text.Pandoc.Definition -import Text.ParserCombinators.Parsec as Parsec +import Text.ParserCombinators.Parsec import Text.Pandoc.Entities ( decodeEntities, escapeStringForXML ) -import Text.PrettyPrint.HughesPJ as PP ( text, char, (<>), - ($$), nest, Doc, isEmpty ) import Data.Char ( toLower, ord ) import Data.List ( find, groupBy, isPrefixOf ) @@ -172,6 +172,21 @@ defaultParserState = stateColumns = 80, stateHeaderTable = [] } +-- | Parses a character and returns 'Null' (so that the parser can move on +-- if it gets stuck). +nullBlock :: GenParser Char st Block +nullBlock = do + anyChar + return Null + +-- | Parses backslash, then applies character parser. +escaped :: GenParser Char st Char -- ^ Parser for character to escape + -> GenParser Char st Inline +escaped parser = try (do + char '\\' + result <- parser + return (Str [result])) + -- | Indent string as a block. indentBy :: Int -- ^ Number of spaces to indent the block -> Int -- ^ Number of spaces (rel to block) to indent first line diff --git a/src/Text/ParserCombinators/Pandoc.hs b/src/Text/ParserCombinators/Pandoc.hs index a965159ed..f418e0e75 100644 --- a/src/Text/ParserCombinators/Pandoc.hs +++ b/src/Text/ParserCombinators/Pandoc.hs @@ -44,7 +44,6 @@ module Text.ParserCombinators.Pandoc ( lineClump ) where import Text.ParserCombinators.Parsec -import Text.Pandoc.Definition import Text.Pandoc.Shared import Data.Char ( toUpper, toLower ) @@ -52,13 +51,6 @@ import Data.Char ( toUpper, toLower ) anyLine :: GenParser Char st [Char] anyLine = manyTill anyChar (newline <|> (do{eof; return '\n'})) --- | Parses a character and returns 'Null' (so that the parser can move on --- if it gets stuck). -nullBlock :: GenParser Char st Block -nullBlock = do - anyChar - return Null - -- | Parses a space or tab. spaceChar :: CharParser st Char spaceChar = oneOf " \t" @@ -77,14 +69,6 @@ blankline = try (do blanklines :: GenParser Char st [Char] blanklines = try (many1 blankline) --- | Parses backslash, then applies character parser. -escaped :: GenParser Char st Char -- ^ Parser for character to escape - -> GenParser Char st Inline -escaped parser = try (do - char '\\' - result <- parser - return (Str [result])) - -- | Parses material enclosed between start and end parsers. enclosed :: GenParser Char st t -- ^ start parser -> GenParser Char st end -- ^ end parser |