-- 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.7 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
-- | 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">"Hello world!"</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]]
-- | 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 Monoid Markdown instance IsString Markdown instance ToMarkup Markdown