commonmark-0.1.0.0: src/Commonmark/Parser.hs
module Commonmark.Parser
( commonmark
, commonmarkWith
, parseCommonmarkWith
-- * Exported from "Text.Parsec.Error"
, ParseError
) where
import Commonmark.Blocks
import Commonmark.Inlines
import Commonmark.Tokens
import Commonmark.Types
import Commonmark.Syntax (SyntaxSpec(..), defaultSyntaxSpec)
import Text.Parsec.Error (ParseError)
import Data.Functor.Identity (runIdentity)
import Data.Text (Text)
-- | Parse a commonmark document using the core syntax
-- elements.
-- To produce HTML, instantiate 'bl' with @'Html' ()@ (see
-- 'Commonmark.Html'.
-- If you want to add syntax extensions or run the parser in a
-- monadic context, use 'commonmarkWith'.
-- If you want to operate on tokenized input, use 'parseCommonmarkWith'.
commonmark :: IsBlock il bl
=> String -- ^ Name or path of input
-> Text -- ^ Commonmark text input
-> Either ParseError bl -- ^ Result or error
commonmark sourcename =
runIdentity .
parseCommonmarkWith defaultSyntaxSpec .
tokenize sourcename
-- | Like 'commonmark', but allows specifying a custom syntax
-- and a monadic context (since some syntax extensions may
-- only be defined in certain monads, e.g. an extension for
-- include files may require IO).
commonmarkWith :: (Monad m, IsBlock il bl, IsInline il)
=> SyntaxSpec m il bl -- ^ Defines syntax
-> String -- ^ Name or path of input
-> Text -- ^ Commonmark text input
-> m (Either ParseError bl) -- ^ Result or error
commonmarkWith syntax sourcename =
parseCommonmarkWith syntax .
tokenize sourcename
-- | Parse a tokenized commonmark document using specified
-- syntax elements. Use 'tokenize' to convert 'Text' into ['Tok'].
parseCommonmarkWith :: (Monad m, IsBlock il bl, IsInline il)
=> SyntaxSpec m il bl -- ^ Defines syntax
-> [Tok] -- ^ Tokenized commonmark input
-> m (Either ParseError bl) -- ^ Result or error
parseCommonmarkWith syntax =
mkBlockParser (syntaxBlockSpecs syntax)
(syntaxFinalParsers syntax)
(mkInlineParser (syntaxBracketedSpecs syntax)
(syntaxFormattingSpecs syntax)
(syntaxInlineParsers syntax)
(syntaxAttributeParsers syntax))
(syntaxAttributeParsers syntax)