pandocSource codeContentsIndex
Text.Pandoc.Shared
Portabilityportable
Stabilityalpha
MaintainerJohn MacFarlane <jgm@berkeley.edu>
Contents
List processing
Text processing
Parsing
Prettyprinting
Pandoc block and inline list processing
Writer options
File handling
Description
Utility functions and definitions used by the various Pandoc modules.
Synopsis
splitBy :: Eq a => a -> [a] -> [[a]]
splitByIndices :: [Int] -> [a] -> [[a]]
substitute :: Eq a => [a] -> [a] -> [a] -> [a]
backslashEscapes :: [Char] -> [(Char, String)]
escapeStringUsing :: [(Char, String)] -> String -> String
stripTrailingNewlines :: String -> String
removeLeadingTrailingSpace :: String -> String
removeLeadingSpace :: String -> String
removeTrailingSpace :: String -> String
stripFirstAndLast :: String -> String
camelCaseToHyphenated :: String -> String
toRomanNumeral :: Int -> String
escapeURI :: String -> String
unescapeURI :: String -> String
wrapped :: Monad m => ([Inline] -> m Doc) -> [Inline] -> m Doc
wrapIfNeeded :: Monad m => WriterOptions -> ([Inline] -> m Doc) -> [Inline] -> m Doc
wrappedTeX :: Monad m => Bool -> ([Inline] -> m Doc) -> [Inline] -> m Doc
wrapTeXIfNeeded :: Monad m => WriterOptions -> Bool -> ([Inline] -> m Doc) -> [Inline] -> m Doc
data BlockWrapper
= Pad Doc
| Reg Doc
wrappedBlocksToDoc :: [BlockWrapper] -> Doc
tabFilter :: Int -> String -> String
(>>~) :: Monad m => m a -> m b -> m a
anyLine :: GenParser Char st [Char]
many1Till :: GenParser tok st a -> GenParser tok st end -> GenParser tok st [a]
notFollowedBy' :: Show b => GenParser a st b -> GenParser a st ()
oneOfStrings :: [String] -> GenParser Char st String
spaceChar :: CharParser st Char
skipSpaces :: GenParser Char st ()
blankline :: GenParser Char st Char
blanklines :: GenParser Char st [Char]
enclosed :: GenParser Char st t -> GenParser Char st end -> GenParser Char st a -> GenParser Char st [a]
stringAnyCase :: [Char] -> CharParser st String
parseFromString :: GenParser tok st a -> [tok] -> GenParser tok st a
lineClump :: GenParser Char st String
charsInBalanced :: Char -> Char -> GenParser Char st String
charsInBalanced' :: Char -> Char -> GenParser Char st String
romanNumeral :: Bool -> GenParser Char st Int
emailAddress :: GenParser Char st (String, String)
uri :: GenParser Char st (String, String)
withHorizDisplacement :: GenParser Char st a -> GenParser Char st (a, Int)
nullBlock :: GenParser Char st Block
failIfStrict :: GenParser Char ParserState ()
failUnlessLHS :: GenParser tok ParserState ()
escaped :: GenParser Char st Char -> GenParser Char st Inline
anyOrderedListMarker :: GenParser Char st ListAttributes
orderedListMarker :: ListNumberStyle -> ListNumberDelim -> GenParser Char st Int
charRef :: GenParser Char st Inline
readWith :: GenParser Char ParserState a -> ParserState -> String -> a
testStringWith :: Show a => GenParser Char ParserState a -> String -> IO ()
data ParserState = ParserState {
stateParseRaw :: Bool
stateParserContext :: ParserContext
stateQuoteContext :: QuoteContext
stateSanitizeHTML :: Bool
stateKeys :: KeyTable
stateNotes :: NoteTable
stateTabStop :: Int
stateStandalone :: Bool
stateTitle :: [Inline]
stateAuthors :: [[Inline]]
stateDate :: [Inline]
stateStrict :: Bool
stateSmart :: Bool
stateLiterateHaskell :: Bool
stateColumns :: Int
stateHeaderTable :: [HeaderType]
stateIndentedCodeClasses :: [String]
}
defaultParserState :: ParserState
data HeaderType
= SingleHeader Char
| DoubleHeader Char
data ParserContext
= ListItemState
| NullState
data QuoteContext
= InSingleQuote
| InDoubleQuote
| NoQuote
type NoteTable = [(String, String)]
type KeyTable = [([Inline], Target)]
lookupKeySrc :: KeyTable -> [Inline] -> Maybe Target
refsMatch :: [Inline] -> [Inline] -> Bool
hang' :: Doc -> Int -> Doc -> Doc
prettyPandoc :: Pandoc -> String
orderedListMarkers :: (Int, ListNumberStyle, ListNumberDelim) -> [String]
normalizeSpaces :: [Inline] -> [Inline]
compactify :: [[Block]] -> [[Block]]
data Element
= Blk Block
| Sec Int [Int] String [Inline] [Element]
hierarchicalize :: [Block] -> [Element]
uniqueIdent :: [Inline] -> [String] -> String
isHeaderBlock :: Block -> Bool
data HTMLMathMethod
= PlainMath
| LaTeXMathML (Maybe String)
| JsMath (Maybe String)
| GladTeX
| MimeTeX String
| MathML (Maybe String)
data ObfuscationMethod
= NoObfuscation
| ReferenceObfuscation
| JavascriptObfuscation
data WriterOptions = WriterOptions {
writerStandalone :: Bool
writerTemplate :: String
writerVariables :: [(String, String)]
writerIncludeBefore :: String
writerIncludeAfter :: String
writerTabStop :: Int
writerTableOfContents :: Bool
writerS5 :: Bool
writerXeTeX :: Bool
writerHTMLMathMethod :: HTMLMathMethod
writerIgnoreNotes :: Bool
writerIncremental :: Bool
writerNumberSections :: Bool
writerStrictMarkdown :: Bool
writerReferenceLinks :: Bool
writerWrapText :: Bool
writerLiterateHaskell :: Bool
writerEmailObfuscation :: ObfuscationMethod
writerIdentifierPrefix :: String
}
defaultWriterOptions :: WriterOptions
inDirectory :: FilePath -> IO a -> IO a
readDataFile :: Maybe FilePath -> FilePath -> IO String
List processing
splitBy :: Eq a => a -> [a] -> [[a]]Source
Split list by groups of one or more sep.
splitByIndices :: [Int] -> [a] -> [[a]]Source
Split list into chunks divided at specified indices.
substitute :: Eq a => [a] -> [a] -> [a] -> [a]Source
Replace each occurrence of one sublist in a list with another.
Text processing
backslashEscapesSource
:: [Char]list of special characters to escape
-> [(Char, String)]
Returns an association list of backslash escapes for the designated characters.
escapeStringUsing :: [(Char, String)] -> String -> StringSource
Escape a string of characters, using an association list of characters and strings.
stripTrailingNewlines :: String -> StringSource
Strip trailing newlines from string.
removeLeadingTrailingSpace :: String -> StringSource
Remove leading and trailing space (including newlines) from string.
removeLeadingSpace :: String -> StringSource
Remove leading space (including newlines) from string.
removeTrailingSpace :: String -> StringSource
Remove trailing space (including newlines) from string.
stripFirstAndLast :: String -> StringSource
Strip leading and trailing characters from string
camelCaseToHyphenated :: String -> StringSource
Change CamelCase word to hyphenated lowercase (e.g., camel-case).
toRomanNumeral :: Int -> StringSource
Convert number < 4000 to uppercase roman numeral.
escapeURI :: String -> StringSource
Escape unicode characters in a URI. Characters that are already valid in a URI, including % and ?, are left alone.
unescapeURI :: String -> StringSource
Unescape unicode and some special characters in a URI, but without introducing spaces.
wrapped :: Monad m => ([Inline] -> m Doc) -> [Inline] -> m DocSource
Wrap inlines to line length.
wrapIfNeeded :: Monad m => WriterOptions -> ([Inline] -> m Doc) -> [Inline] -> m DocSource
Wrap inlines if the text wrap option is selected.
wrappedTeX :: Monad m => Bool -> ([Inline] -> m Doc) -> [Inline] -> m DocSource
Wrap inlines to line length, treating footnotes in a way that makes sense in LaTeX and ConTeXt.
wrapTeXIfNeeded :: Monad m => WriterOptions -> Bool -> ([Inline] -> m Doc) -> [Inline] -> m DocSource
Wrap inlines if the text wrap option is selected, specialized for LaTeX and ConTeXt.
data BlockWrapper Source
Indicates whether block should be surrounded by blank lines (Pad) or not (Reg).
Constructors
Pad Doc
Reg Doc
wrappedBlocksToDoc :: [BlockWrapper] -> DocSource
Converts a list of wrapped blocks to a Doc, with appropriate spaces around blocks.
tabFilterSource
:: IntTab stop
-> StringInput
-> String
Convert tabs to spaces and filter out DOS line endings. Tabs will be preserved if tab stop is set to 0.
Parsing
(>>~) :: Monad m => m a -> m b -> m aSource
Like >>, but returns the operation on the left. (Suggested by Tillmann Rendel on Haskell-cafe list.)
anyLine :: GenParser Char st [Char]Source
Parse any line of text
many1Till :: GenParser tok st a -> GenParser tok st end -> GenParser tok st [a]Source
Like manyTill, but reads at least one item.
notFollowedBy' :: Show b => GenParser a st b -> GenParser a st ()Source
A more general form of notFollowedBy. This one allows any type of parser to be specified, and succeeds only if that parser fails. It does not consume any input.
oneOfStrings :: [String] -> GenParser Char st StringSource
Parses one of a list of strings (tried in order).
spaceChar :: CharParser st CharSource
Parses a space or tab.
skipSpaces :: GenParser Char st ()Source
Skips zero or more spaces or tabs.
blankline :: GenParser Char st CharSource
Skips zero or more spaces or tabs, then reads a newline.
blanklines :: GenParser Char st [Char]Source
Parses one or more blank lines and returns a string of newlines.
enclosedSource
::
=> GenParser Char st tstart parser
-> GenParser Char st endend parser
-> GenParser Char st acontent parser (to be used repeatedly)
-> GenParser Char st [a]
Parses material enclosed between start and end parsers.
stringAnyCase :: [Char] -> CharParser st StringSource
Parse string, case insensitive.
parseFromString :: GenParser tok st a -> [tok] -> GenParser tok st aSource
Parse contents of str using parser and return result.
lineClump :: GenParser Char st StringSource
Parse raw line block up to and including blank lines.
charsInBalanced :: Char -> Char -> GenParser Char st StringSource
Parse a string of characters between an open character and a close character, including text between balanced pairs of open and close, which must be different. For example, charsInBalanced '(' ')' will parse (hello (there)) and return hello (there). Stop if a blank line is encountered.
charsInBalanced' :: Char -> Char -> GenParser Char st StringSource
Like charsInBalanced, but allow blank lines in the content.
romanNumeralSource
::
=> BoolUppercase if true
-> GenParser Char st Int
Parses a roman numeral (uppercase or lowercase), returns number.
emailAddress :: GenParser Char st (String, String)Source
Parses an email address; returns original and corresponding escaped mailto: URI.
uri :: GenParser Char st (String, String)Source
Parses a URI. Returns pair of original and URI-escaped version.
withHorizDisplacementSource
::
=> GenParser Char st aParser to apply
-> GenParser Char st (a, Int)(result, displacement)
Applies a parser, returns tuple of its results and its horizontal displacement (the difference between the source column at the end and the source column at the beginning). Vertical displacement (source row) is ignored.
nullBlock :: GenParser Char st BlockSource
Parses a character and returns Null (so that the parser can move on if it gets stuck).
failIfStrict :: GenParser Char ParserState ()Source
Fail if reader is in strict markdown syntax mode.
failUnlessLHS :: GenParser tok ParserState ()Source
Fail unless we're in literate haskell mode.
escapedSource
::
=> GenParser Char st CharParser for character to escape
-> GenParser Char st Inline
Parses backslash, then applies character parser.
anyOrderedListMarker :: GenParser Char st ListAttributesSource
Parses an ordered list marker and returns list attributes.
orderedListMarker :: ListNumberStyle -> ListNumberDelim -> GenParser Char st IntSource
Parses an ordered list marker with a given style and delimiter, returns number.
charRef :: GenParser Char st InlineSource
Parses a character reference and returns a Str element.
readWithSource
::
=> GenParser Char ParserState aparser
-> ParserStateinitial state
-> Stringinput string
-> a
Parse a string with a given parser and state.
testStringWith :: Show a => GenParser Char ParserState a -> String -> IO ()Source
Parse a string with parser (for testing).
data ParserState Source
Parsing options.
Constructors
ParserState
stateParseRaw :: BoolParse raw HTML and LaTeX?
stateParserContext :: ParserContextInside list?
stateQuoteContext :: QuoteContextInside quoted environment?
stateSanitizeHTML :: BoolSanitize HTML?
stateKeys :: KeyTableList of reference keys
stateNotes :: NoteTableList of notes
stateTabStop :: IntTab stop
stateStandalone :: BoolParse bibliographic info?
stateTitle :: [Inline]Title of document
stateAuthors :: [[Inline]]Authors of document
stateDate :: [Inline]Date of document
stateStrict :: BoolUse strict markdown syntax?
stateSmart :: BoolUse smart typography?
stateLiterateHaskell :: BoolTreat input as literate haskell
stateColumns :: IntNumber of columns in terminal
stateHeaderTable :: [HeaderType]Ordered list of header types used
stateIndentedCodeClasses :: [String]Classes to use for indented code blocks
show/hide Instances
defaultParserState :: ParserStateSource
data HeaderType Source
Constructors
SingleHeader CharSingle line of characters underneath
DoubleHeader CharLines of characters above and below
show/hide Instances
data ParserContext Source
Constructors
ListItemStateUsed when running parser on list item contents
NullStateDefault state
show/hide Instances
data QuoteContext Source
Constructors
InSingleQuoteUsed when parsing inside single quotes
InDoubleQuoteUsed when parsing inside double quotes
NoQuoteUsed when not parsing inside quotes
show/hide Instances
type NoteTable = [(String, String)]Source
type KeyTable = [([Inline], Target)]Source
lookupKeySrcSource
:: KeyTableKey table
-> [Inline]Key
-> Maybe Target
Look up key in key table and return target object.
refsMatch :: [Inline] -> [Inline] -> BoolSource
Returns True if keys match (case insensitive).
Prettyprinting
hang' :: Doc -> Int -> Doc -> DocSource
A version of hang that works like the version in pretty-1.0.0.0
prettyPandoc :: Pandoc -> StringSource
Prettyprint Pandoc document.
Pandoc block and inline list processing
orderedListMarkers :: (Int, ListNumberStyle, ListNumberDelim) -> [String]Source
Generate infinite lazy list of markers for an ordered list, depending on list attributes.
normalizeSpaces :: [Inline] -> [Inline]Source
Normalize a list of inline elements: remove leading and trailing Space elements, collapse double Spaces into singles, and remove empty Str elements.
compactifySource
:: [[Block]]List of list items (each a list of blocks)
-> [[Block]]
Change final list item from Para to Plain if the list contains no other Para blocks.
data Element Source
Data structure for defining hierarchical Pandoc documents
Constructors
Blk Block
Sec Int [Int] String [Inline] [Element]
show/hide Instances
hierarchicalize :: [Block] -> [Element]Source
Convert list of Pandoc blocks into (hierarchical) list of Elements
uniqueIdent :: [Inline] -> [String] -> StringSource
Generate a unique identifier from a list of inlines. Second argument is a list of already used identifiers.
isHeaderBlock :: Block -> BoolSource
True if block is a Header block.
Writer options
data HTMLMathMethod Source
Constructors
PlainMath
LaTeXMathML (Maybe String)
JsMath (Maybe String)
GladTeX
MimeTeX String
MathML (Maybe String)
show/hide Instances
data ObfuscationMethod Source
Methods for obfuscating email addresses in HTML.
Constructors
NoObfuscation
ReferenceObfuscation
JavascriptObfuscation
show/hide Instances
data WriterOptions Source
Options for writers
Constructors
WriterOptions
writerStandalone :: BoolInclude header and footer
writerTemplate :: StringTemplate to use in standalone mode
writerVariables :: [(String, String)]Variables to set in template
writerIncludeBefore :: StringText to include before the body
writerIncludeAfter :: StringText to include after the body
writerTabStop :: IntTabstop for conversion btw spaces and tabs
writerTableOfContents :: BoolInclude table of contents
writerS5 :: BoolWe're writing S5
writerXeTeX :: BoolCreate latex suitable for use by xetex
writerHTMLMathMethod :: HTMLMathMethodHow to print math in HTML
writerIgnoreNotes :: BoolIgnore footnotes (used in making toc)
writerIncremental :: BoolIncremental S5 lists
writerNumberSections :: BoolNumber sections in LaTeX
writerStrictMarkdown :: BoolUse strict markdown syntax
writerReferenceLinks :: BoolUse reference links in writing markdown, rst
writerWrapText :: BoolWrap text to line length
writerLiterateHaskell :: BoolWrite as literate haskell
writerEmailObfuscation :: ObfuscationMethodHow to obfuscate emails
writerIdentifierPrefix :: StringPrefix for section & note ids in HTML
show/hide Instances
defaultWriterOptions :: WriterOptionsSource
Default writer options.
File handling
inDirectory :: FilePath -> IO a -> IO aSource
Perform an IO action in a directory, returning to starting directory.
readDataFile :: Maybe FilePath -> FilePath -> IO StringSource
Read file from specified user data directory or, if not found there, from Cabal data directory.
Produced by Haddock version 2.4.2