pandoc-1.8.2.1: Conversion between markup formats

Portability | portable
Stability | alpha
Maintainer | John MacFarlane <jgm@berkeley.edu>

Text.Pandoc.Shared

Contents

- List processing
- Text processing
- Pandoc block and inline list processing
- Writer options
- File handling

Description

Utility functions and definitions used by the various Pandoc modules.

Synopsis

- splitBy :: (a -> Bool) -> [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
- tabFilter :: Int -> String -> String
- orderedListMarkers :: (Int, ListNumberStyle, ListNumberDelim) -> [String]
- normalizeSpaces :: [Inline] -> [Inline]
- normalize :: (Eq a, Data a) => a -> a
- stringify :: [Inline] -> String
- compactify :: [[Block]] -> [[Block]]
- data Element
  - = Blk Block
  - | Sec Int [Int] String [Inline] [Element]
- hierarchicalize :: [Block] -> [Element]
- uniqueIdent :: [Inline] -> [String] -> String
- isHeaderBlock :: Block -> Bool
- headerShift :: Int -> Pandoc -> Pandoc
- data HTMLMathMethod
  - = PlainMath
  - | LaTeXMathML (Maybe String)
  - | JsMath (Maybe String)
  - | GladTeX
  - | WebTeX String
  - | MathML (Maybe String)
  - | MathJax String
- data CiteMethod
  - = Citeproc
  - | Natbib
  - | Biblatex
- data ObfuscationMethod
  - = NoObfuscation
  - | ReferenceObfuscation
  - | JavascriptObfuscation
- data HTMLSlideVariant
  - = S5Slides
  - | SlidySlides
  - | NoSlides
- data WriterOptions = WriterOptions {
  - writerStandalone :: Bool
  - writerTemplate :: String
  - writerVariables :: [(String, String)]
  - writerEPUBMetadata :: String
  - writerTabStop :: Int
  - writerTableOfContents :: Bool
  - writerSlideVariant :: HTMLSlideVariant
  - writerIncremental :: Bool
  - writerXeTeX :: Bool
  - writerHTMLMathMethod :: HTMLMathMethod
  - writerIgnoreNotes :: Bool
  - writerNumberSections :: Bool
  - writerSectionDivs :: Bool
  - writerStrictMarkdown :: Bool
  - writerReferenceLinks :: Bool
  - writerWrapText :: Bool
  - writerColumns :: Int
  - writerLiterateHaskell :: Bool
  - writerEmailObfuscation :: ObfuscationMethod
  - writerIdentifierPrefix :: String
  - writerSourceDirectory :: FilePath
  - writerUserDataDir :: Maybe FilePath
  - writerCiteMethod :: CiteMethod
  - writerBiblioFiles :: [FilePath]
  - writerHtml5 :: Bool
  - writerChapters :: Bool
  - writerListings :: Bool
  - writerAscii :: Bool
  }
- defaultWriterOptions :: WriterOptions
- inDirectory :: FilePath -> IO a -> IO a
- findDataFile :: Maybe FilePath -> FilePath -> IO FilePath
- readDataFile :: Maybe FilePath -> FilePath -> IO String

# List processing

splitBy :: (a -> Bool) -> [a] -> [[a]]

Split list by groups of one or more sep.

splitByIndices :: [Int] -> [a] -> [[a]]

Split list into chunks divided at specified indices.

substitute :: Eq a => [a] -> [a] -> [a] -> [a]

Replace each occurrence of one sublist in a list with another.

# Text processing

backslashEscapes

Arguments

:: [Char] | list of special characters to escape
-> [(Char, String)] |

Returns an association list of backslash escapes for the designated characters.

escapeStringUsing :: [(Char, String)] -> String -> String

Escape a string of characters, using an association list of characters and strings.

stripTrailingNewlines :: String -> String

Strip trailing newlines from string.

removeLeadingTrailingSpace :: String -> String

Remove leading and trailing space (including newlines) from string.

removeLeadingSpace :: String -> String

Remove leading space (including newlines) from string.

removeTrailingSpace :: String -> String

Remove trailing space (including newlines) from string.

stripFirstAndLast :: String -> String

Strip leading and trailing characters from string

camelCaseToHyphenated :: String -> String

Change CamelCase word to hyphenated lowercase (e.g., camel-case).

toRomanNumeral :: Int -> String

Convert number < 4000 to uppercase roman numeral.

escapeURI :: String -> String

Escape unicode characters in a URI. Characters that are already valid in a URI, including % and ?, are left alone.

unescapeURI :: String -> String

Unescape unicode and some special characters in a URI, but without introducing spaces.

tabFilter

Arguments

:: Int | Tab stop
-> String | Input
-> String |

Convert tabs to spaces and filter out DOS line endings. Tabs will be preserved if tab stop is set to 0.

# Pandoc block and inline list processing

orderedListMarkers :: (Int, ListNumberStyle, ListNumberDelim) -> [String]

Generate infinite lazy list of markers for an ordered list, depending on list attributes.

normalizeSpaces :: [Inline] -> [Inline]

Normalize a list of inline elements: remove leading and trailing `Space` elements, collapse double `Space`s into singles, and remove empty Str elements.

normalize :: (Eq a, Data a) => a -> a

Normalize `Pandoc` document, consolidating doubled `Space`s, combining adjacent `Str`s and `Emph`s, remove `Null`s and empty elements, etc.

stringify :: [Inline] -> String

Convert list of inlines to a string with formatting removed.

compactify

Arguments

:: [[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

Data structure for defining hierarchical Pandoc documents

Constructors

Blk Block |
Sec Int [Int] String [Inline] [Element] |

Instances

Eq Element |
Data Element |
Read Element |
Show Element |
Typeable Element |

hierarchicalize :: [Block] -> [Element]

Convert list of Pandoc blocks into (hierarchical) list of Elements

uniqueIdent :: [Inline] -> [String] -> String

Generate a unique identifier from a list of inlines. Second argument is a list of already used identifiers.

isHeaderBlock :: Block -> Bool

True if block is a Header block.

headerShift :: Int -> Pandoc -> Pandoc

Shift header levels up or down.

# Writer options

data HTMLMathMethod

Constructors

PlainMath |
LaTeXMathML (Maybe String) |
JsMath (Maybe String) |
GladTeX |
WebTeX String |
MathML (Maybe String) |
MathJax String |

Instances

Eq HTMLMathMethod |
Read HTMLMathMethod |
Show HTMLMathMethod |

data CiteMethod

Constructors

Citeproc |
Natbib |
Biblatex |

Instances

Eq CiteMethod |
Read CiteMethod |
Show CiteMethod |

data ObfuscationMethod

Methods for obfuscating email addresses in HTML.

Constructors

NoObfuscation |
ReferenceObfuscation |
JavascriptObfuscation |

Instances

Eq ObfuscationMethod |
Read ObfuscationMethod |
Show ObfuscationMethod |

data HTMLSlideVariant

Varieties of HTML slide shows.

Constructors

S5Slides |
SlidySlides |
NoSlides |

Instances

Eq HTMLSlideVariant |
Read HTMLSlideVariant |
Show HTMLSlideVariant |

data WriterOptions

Options for writers

Constructors

WriterOptions |
Fields writerStandalone :: Bool Include header and footer writerTemplate :: String Template to use in standalone mode writerVariables :: [(String, String)] Variables to set in template writerEPUBMetadata :: String Metadata to include in EPUB writerTabStop :: Int Tabstop for conversion btw spaces and tabs writerTableOfContents :: Bool Include table of contents writerSlideVariant :: HTMLSlideVariant Are we writing S5 or Slidy? writerIncremental :: Bool True if lists should be incremental writerXeTeX :: Bool Create latex suitable for use by xetex writerHTMLMathMethod :: HTMLMathMethod How to print math in HTML writerIgnoreNotes :: Bool Ignore footnotes (used in making toc) writerNumberSections :: Bool Number sections in LaTeX writerSectionDivs :: Bool Put sections in div tags in HTML writerStrictMarkdown :: Bool Use strict markdown syntax writerReferenceLinks :: Bool Use reference links in writing markdown, rst writerWrapText :: Bool Wrap text to line length writerColumns :: Int Characters in a line (for text wrapping) writerLiterateHaskell :: Bool Write as literate haskell writerEmailObfuscation :: ObfuscationMethod How to obfuscate emails writerIdentifierPrefix :: String Prefix for section & note ids in HTML writerSourceDirectory :: FilePath Directory path of 1st source file writerUserDataDir :: Maybe FilePath Path of user data directory writerCiteMethod :: CiteMethod How to print cites writerBiblioFiles :: [FilePath] Biblio files to use for citations writerHtml5 :: Bool Produce HTML5 writerChapters :: Bool Use chapter for top-level sects writerListings :: Bool Use listings package for code writerAscii :: Bool Avoid non-ascii characters

Instances

Show WriterOptions |

defaultWriterOptions :: WriterOptions

Default writer options.

# File handling

inDirectory :: FilePath -> IO a -> IO a

Perform an IO action in a directory, returning to starting directory.

findDataFile :: Maybe FilePath -> FilePath -> IO FilePath

Get file path for data file, either from specified user data directory, or, if not found there, from Cabal data directory.

readDataFile :: Maybe FilePath -> FilePath -> IO String

Read file from specified user data directory or, if not found there, from Cabal data directory.