From e15fd3bf86f91d6c14bf9ba2e2aa7057dc51d72b Mon Sep 17 00:00:00 2001 From: fiddlosopher Date: Sun, 15 Apr 2007 16:20:07 +0000 Subject: Moved escape and nullBlock parsers from ParserCombinators/Pandoc to Pandoc/Shared. Reason: ParserCombinators/Pandoc is for general-purpose parsers that don't require Pandoc.Definition. Also removed some unnecessary imports from Pandoc/Shared. git-svn-id: https://pandoc.googlecode.com/svn/trunk@584 788f1e2b-df1e-0410-8736-df70ead52e1b --- src/Text/Pandoc/Shared.hs | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) (limited to 'src/Text/Pandoc/Shared.hs') 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 -- cgit v1.2.3