content: {- |
     Module      : Text.Pandoc.Parsing
     Copyright   : Copyright (C) 2006-2024 John MacFarlane
     License     : GNU GPL, version 2 or above
  
     Maintainer  : John MacFarlane <jgm@berkeley.edu>
     Stability   : alpha
     Portability : portable
  
  A utility library with parsers used in pandoc readers.
  -}
  
  module Text.Pandoc.Parsing ( module Text.Pandoc.Sources,
                               countChar,
                               textStr,
                               anyLine,
                               anyLineNewline,
                               indentWith,
                               manyChar,
                               many1Char,
                               manyTillChar,
                               many1TillChar,
                               many1Till,
                               manyUntil,
                               manyUntilChar,
                               sepBy1',
                               notFollowedBy',
                               oneOfStrings,
                               oneOfStringsCI,
                               spaceChar,
                               nonspaceChar,
                               skipSpaces,
                               blankline,
                               blanklines,
                               gobbleSpaces,
                               gobbleAtMostSpaces,
                               enclosed,
                               stringAnyCase,
                               parseFromString,
                               parseFromString',
                               lineClump,
                               charsInBalanced,
                               romanNumeral,
                               emailAddress,
                               uri,
                               mathInline,
                               mathDisplay,
                               withHorizDisplacement,
                               withRaw,
                               fromParsecError,
                               escaped,
                               characterReference,
                               upperRoman,
                               lowerRoman,
                               decimal,
                               lowerAlpha,
                               upperAlpha,
                               anyOrderedListMarker,
                               orderedListMarker,
                               charRef,
                               lineBlockLines,
                               tableWith,
                               tableWith',
                               tableWithSpans,
                               tableWithSpans',
                               widthsFromIndices,
                               gridTableWith,
                               gridTableWith',
                               TableComponents (..),
                               TableNormalization (..),
                               toTableComponents,
                               toTableComponents',
                               toTableComponentsWithSpans,
                               toTableComponentsWithSpans',
                               singleRowSpans,
                               singleColumnSpans,
                               readWith,
                               readWithM,
                               testStringWith,
                               guardEnabled,
                               guardDisabled,
                               updateLastStrPos,
                               notAfterString,
                               logMessage,
                               reportLogMessages,
                               ParserState (..),
                               HasReaderOptions (..),
                               HasIdentifierList (..),
                               HasMacros (..),
                               HasLogMessages (..),
                               HasLastStrPosition (..),
                               HasIncludeFiles (..),
                               defaultParserState,
                               HeaderType (..),
                               ParserContext (..),
                               QuoteContext (..),
                               HasQuoteContext (..),
                               NoteTable,
                               NoteTable',
                               KeyTable,
                               SubstTable,
                               Key (..),
                               toKey,
                               registerHeader,
                               smartPunctuation,
                               singleQuoteStart,
                               singleQuoteEnd,
                               doubleQuoteStart,
                               doubleQuoteEnd,
                               apostrophe,
                               doubleCloseQuote,
                               ellipses,
                               dash,
                               citeKey,
                               Parsec,
                               ParsecT,
                               Future(..),
                               runF,
                               askF,
                               asksF,
                               returnF,
                               trimInlinesF,
                               token,
                               (<+?>),
                               extractIdClass,
                               insertIncludedFile,
                               -- * Re-exports from Text.Parsec
                               Stream(..),
                               runParser,
                               runParserT,
                               parse,
                               tokenPrim,
                               anyToken,
                               getInput,
                               setInput,
                               unexpected,
                               skipMany,
                               skipMany1,
                               count,
                               eof,
                               lookAhead,
                               notFollowedBy,
                               many,
                               many1,
                               manyTill,
                               (<|>),
                               (<?>),
                               choice,
                               try,
                               sepBy,
                               sepBy1,
                               sepEndBy,
                               sepEndBy1,
                               endBy,
                               endBy1,
                               option,
                               optional,
                               optionMaybe,
                               getState,
                               setState,
                               updateState,
                               SourcePos,
                               SourceName,
                               updatePosString,
                               getPosition,
                               setPosition,
                               sourceName,
                               setSourceName,
                               sourceColumn,
                               sourceLine,
                               setSourceColumn,
                               setSourceLine,
                               incSourceColumn,
                               incSourceLine,
                               newPos,
                               initialPos,
                               Line,
                               Column,
                               ParseError,
                               errorMessages,
                               messageString
                               )
  where
  
  import Text.Pandoc.Sources
  import Text.Parsec
      ( Parsec,
        ParsecT,
        SourcePos,
        SourceName,
        setSourceName,
        Column,
        Line,
        incSourceLine,
        incSourceColumn,
        setSourceLine,
        setSourceColumn,
        sourceLine,
        sourceColumn,
        sourceName,
        setSourceName,
        setPosition,
        getPosition,
        updateState,
        setState,
        getState,
        optionMaybe,
        optional,
        option,
        endBy1,
        endBy,
        sepEndBy1,
        sepEndBy,
        sepBy1,
        sepBy,
        try,
        choice,
        (<?>),
        (<|>),
        manyTill,
        many1,
        many,
        notFollowedBy,
        lookAhead,
        eof,
        count,
        skipMany1,
        skipMany,
        unexpected,
        setInput,
        getInput,
        anyToken,
        tokenPrim,
        parse,
        runParserT,
        runParser,
        ParseError,
        Stream(..) )
  import Text.Parsec.Error (
        errorMessages,
        messageString )
  import Text.Parsec.Pos (initialPos, newPos, updatePosString)
  import Text.Pandoc.Parsing.Capabilities
      ( guardDisabled,
        guardEnabled,
        logMessage,
        notAfterString,
        reportLogMessages,
        updateLastStrPos,
        HasIdentifierList(..),
        HasIncludeFiles(..),
        HasLastStrPosition(..),
        HasLogMessages(..),
        HasMacros(..),
        HasQuoteContext(..),
        HasReaderOptions(..),
        QuoteContext(..) )
  import Text.Pandoc.Parsing.Citations ( citeKey )
  import Text.Pandoc.Parsing.General
      ( readWithM,
        (<+?>),
        anyLine,
        anyLineNewline,
        blankline,
        blanklines,
        charRef,
        characterReference,
        charsInBalanced,
        countChar,
        emailAddress,
        enclosed,
        escaped,
        extractIdClass,
        gobbleAtMostSpaces,
        gobbleSpaces,
        indentWith,
        insertIncludedFile,
        lineBlockLines,
        lineClump,
        many1Char,
        many1Till,
        many1TillChar,
        manyChar,
        manyTillChar,
        manyUntil,
        manyUntilChar,
        nonspaceChar,
        notFollowedBy',
        oneOfStrings,
        oneOfStringsCI,
        parseFromString,
        parseFromString',
        readWith,
        registerHeader,
        sepBy1',
        skipSpaces,
        spaceChar,
        stringAnyCase,
        testStringWith,
        textStr,
        token,
        trimInlinesF,
        uri,
        withHorizDisplacement,
        withRaw,
        fromParsecError )
  import Text.Pandoc.Parsing.GridTable
      ( gridTableWith,
        gridTableWith',
        tableWith,
        tableWith',
        tableWithSpans,
        tableWithSpans',
        toTableComponents,
        toTableComponents',
        toTableComponentsWithSpans,
        toTableComponentsWithSpans',
        singleRowSpans,
        singleColumnSpans,
        widthsFromIndices,
        TableComponents(..),
        TableNormalization(..) )
  import Text.Pandoc.Parsing.Lists
      ( anyOrderedListMarker,
        decimal,
        lowerAlpha,
        lowerRoman,
        orderedListMarker,
        romanNumeral,
        upperAlpha,
        upperRoman )
  import Text.Pandoc.Parsing.Math ( mathDisplay, mathInline )
  import Text.Pandoc.Parsing.Smart
      ( apostrophe,
        dash,
        doubleCloseQuote,
        doubleQuoteEnd,
        doubleQuoteStart,
        ellipses,
        singleQuoteEnd,
        singleQuoteStart,
        smartPunctuation )
  import Text.Pandoc.Parsing.State
      ( defaultParserState,
        toKey,
        HeaderType(..),
        Key(..),
        KeyTable,
        NoteTable,
        NoteTable',
        ParserContext(..),
        ParserState(..),
        SubstTable )
  import Text.Pandoc.Parsing.Future
      ( askF, asksF, returnF, runF, Future(..) )
  