-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/

-- | Convert Markdown to HTML, with XSS protection
--   
--   This library leverages existing high-performance libraries
--   (attoparsec, blaze-html, text, and conduit), and should integrate well
--   with existing codebases.
@package markdown
@version 0.1.17.5

module Text.Markdown.Inline
data Inline
InlineText :: Text -> Inline
InlineItalic :: [Inline] -> Inline
InlineBold :: [Inline] -> Inline
InlineCode :: Text -> Inline
InlineHtml :: Text -> Inline

-- | URL, title, content
InlineLink :: Text -> Maybe Text -> [Inline] -> Inline

-- | URL, title, content
InlineImage :: Text -> Maybe Text -> Text -> Inline

-- | The footnote reference in the body
InlineFootnoteRef :: Integer -> Inline
InlineFootnote :: Integer -> Inline
inlineParser :: RefMap -> Parser [Inline]
toInline :: RefMap -> Text -> [Inline]

module Text.Markdown.Block
data Block inline
BlockPara :: inline -> Block inline
BlockList :: ListType -> Either inline [Block inline] -> Block inline
BlockCode :: Maybe Text -> Text -> Block inline
BlockQuote :: [Block inline] -> Block inline
BlockHtml :: Text -> Block inline
BlockRule :: Block inline
BlockHeading :: Int -> inline -> Block inline
BlockReference :: Text -> Text -> Block inline
BlockPlainText :: inline -> Block inline
data ListType
Ordered :: ListType
Unordered :: ListType
toBlocks :: forall (m :: Type -> Type). Monad m => MarkdownSettings -> ConduitM Text (Block Text) m ()
toBlockLines :: Block Text -> Block [Text]

module Text.Markdown

-- | Convert the given textual markdown content to HTML.
--   
--   
--   >>> :set -XOverloadedStrings
--   
--   >>> import Text.Blaze.Html.Renderer.Text
--   
--   >>> renderHtml $ markdown def "# Hello World!"
--   "<h1>Hello World!</h1>"
--   
--   
--   
--   >>> renderHtml $ markdown def { msXssProtect = False } "<script>alert('evil')</script>"
--   "<script>alert('evil')</script>"
--   
markdown :: MarkdownSettings -> Text -> Html

-- | A settings type providing various configuration options.
--   
--   See http://www.yesodweb.com/book/settings-types for more
--   information on settings types. In general, you can use def.
data MarkdownSettings

defaultMarkdownSettings :: MarkdownSettings

-- | Whether to automatically apply XSS protection to embedded HTML.
--   Default: True.
msXssProtect :: MarkdownSettings -> Bool

-- | HTML snippets which stand on their own. We do not require a blank line
--   following these pieces of HTML.
--   
--   Default: empty set.
--   
--   Since: 0.1.2
msStandaloneHtml :: MarkdownSettings -> Set Text

-- | Handlers for the special "fenced" format. This is most commonly used
--   for fenced code, e.g.:
--   
--   
--   ```haskell
--   main = putStrLn "Hello"
--   ```
--   
--   
--   This is an extension of Markdown, but a fairly commonly used one.
--   
--   This setting allows you to create new kinds of fencing. Fencing goes
--   into two categories: parsed and raw. Code fencing would be in the raw
--   category, where the contents are not treated as Markdown. Parsed will
--   treat the contents as Markdown and allow you to perform some kind of
--   modifcation to it.
--   
--   For example, to create a new @@@ fencing which wraps up the
--   contents in an article tag, you could use:
--   
--   
--   def { msFencedHandlers = htmlFencedHandler "@@@" (const "<article>") (const "</article")
--                `Map.union` msFencedHandlers def
--       }
--   
--   
--   Default: code fencing for ``` and ~~~.
--   
--   Since: 0.1.2
msFencedHandlers :: MarkdownSettings -> Map Text (Text -> FencedHandler)

-- | A rendering function through which code blocks are passed.
--   
--   The arguments are the block's language, if any, and the tuple
--   (unrendered content, rendered content). For example, if you
--   wanted to pass code blocks in your markdown text through a highlighter
--   like highlighting-kate, you might do something like:
--   
--   
--   >>> :set -XOverloadedStrings
--   
--   >>> let renderer lang (src,_) = formatHtmlBlock defaultFormatOpts $ highlightAs (maybe "text" unpack lang) $ unpack src
--   
--   >>> let md = markdown def { msBlockCodeRenderer = renderer } "``` haskell\nmain = putStrLn \"Hello world!\"\n```"
--   
--   >>> putStrLn $ renderHtml md
--   <pre class="sourceCode"><code class="sourceCode">main <span class="fu">=</span> <span class="fu">putStrLn</span> <span class="st">&quot;Hello world!&quot;</span></code></pre>
--   
--   
--   Since: 0.1.2.1
msBlockCodeRenderer :: MarkdownSettings -> Maybe Text -> (Text, Html) -> Html

-- | If True, all generated links have the attribute target=_blank
--   set, causing them to be opened in a new tab or window.
--   
--   Default: False
--   
--   Since 0.1.4
msLinkNewTab :: MarkdownSettings -> Bool

-- | If True, a blank line is required before the start of a
--   blockquote. Standard markdown syntax does not require a blank line
--   before a blockquote, but it is all too easy for a > to end up at
--   the beginning of a line by accident.
--   
--   Default: True
--   
--   Since 0.1.5
msBlankBeforeBlockquote :: MarkdownSettings -> Bool

-- | A function to filter and/or modify parsed blocks before they are
--   written to Html
--   
--   Default: id
--   
--   Since 0.1.7
msBlockFilter :: MarkdownSettings -> [Block [Inline]] -> [Block [Inline]]

-- | If True, an id attribute is added to the heading tag
--   with the value equal to the text with only valid CSS identifier
--   characters.
--   
--   
--   ## Executive Summary
--   
--   
--   
--   <h2 id="executive-summary">Executive Summary</h2>
--   
--   
--   Default: False
--   
--   Since 0.1.13
msAddHeadingId :: MarkdownSettings -> Bool

-- | For external links, add the rel="nofollow" attribute
setNoFollowExternal :: MarkdownSettings -> MarkdownSettings

-- | A newtype wrapper providing a ToHtml instance.
newtype Markdown
Markdown :: Text -> Markdown

-- | See 'msFencedHandlers.
--   
--   Since 0.1.2
data FencedHandler

-- | Wrap up the given raw content.
FHRaw :: (Text -> [Block Text]) -> FencedHandler

-- | Wrap up the given parsed content.
FHParsed :: ([Block Text] -> [Block Text]) -> FencedHandler

-- | Helper for creating a FHRaw.
--   
--   Since 0.1.2
codeFencedHandler :: Text -> Map Text (Text -> FencedHandler)

-- | Helper for creating a FHParsed.
--   
--   Note that the start and end parameters take a Text parameter;
--   this is the text following the delimiter. For example, with the
--   markdown:
--   
--   
--   @@@ foo
--   
--   
--   foo would be passed to start and end.
--   
--   Since 0.1.2
htmlFencedHandler :: Text -> (Text -> Text) -> (Text -> Text) -> Map Text (Text -> FencedHandler)

-- | The default value for this type.
def :: Default a => a
instance GHC.Classes.Eq Text.Markdown.Markdown
instance GHC.Internal.Data.String.IsString Text.Markdown.Markdown
instance GHC.Internal.Base.Monoid Text.Markdown.Markdown
instance GHC.Classes.Ord Text.Markdown.Markdown
instance GHC.Internal.Base.Semigroup Text.Markdown.Markdown
instance GHC.Internal.Show.Show Text.Markdown.Markdown
instance Text.Blaze.ToMarkup Text.Markdown.Markdown
