yesod-markdown 0.12.2 → 0.12.3
raw patch · 3 files changed
+86/−14 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Yesod.Markdown: markdownToHtmlWith :: ReaderOptions -> WriterOptions -> Markdown -> Either PandocError Html
+ Yesod.Markdown: markdownToHtmlWithExtensions :: Extensions -> Markdown -> Either PandocError Html
Files
- README.md +25/−2
- src/Yesod/Markdown.hs +59/−10
- yesod-markdown.cabal +2/−2
README.md view
@@ -7,12 +7,35 @@ ## Usage +```hs+getPageR :: FilePath -> Handler RepHtml+getPageR fp = do+ content <- liftIO+ $ fmap markdownToHtml+ $ markdownFromFile fp++ defaultLayout $ do+ [shamlet|+ <div class="content">+ #{content}+ |] ```++The default extensions are minimal, you can specify you're preferred+[extensions][] with `markdownToHtmlWithExtensions`:++[extensions](http://hackage.haskell.org/package/pandoc/docs/Text-Pandoc-Extensions.html)++```haskell+import Text.Pandoc.Extensions (githubMarkdownExtensions)+ getPageR :: FilePath -> Handler RepHtml getPageR fp = do- content <- liftIO $ fmap markdownToHtml (markdownFromFile fp)+ content <- liftIO+ $ fmap (markdownToHtmlWithExtensions githubMarkdownExtensions)+ $ markdownFromFile fp) - defaultLayout do+ defaultLayout $ do [shamlet| <div class="content"> #{content}
src/Yesod/Markdown.hs view
@@ -12,6 +12,8 @@ -- * Wrappers , markdownToHtml , markdownToHtmlTrusted+ , markdownToHtmlWithExtensions+ , markdownToHtmlWith , markdownFromFile -- * Conversions , parseMarkdown@@ -25,6 +27,7 @@ , markdownField ) where +import Control.Monad ((<=<)) import Data.String (IsString) import Data.Text (Text) import Data.Text.Encoding (decodeUtf8With)@@ -65,17 +68,53 @@ , fieldEnctype = UrlEncoded } +-- | Process Markdown using our options and sanitization markdownToHtml :: Markdown -> Either PandocError Html-markdownToHtml md = do- p <- parseMarkdown yesodDefaultReaderOptions md- writePandoc yesodDefaultWriterOptions p+markdownToHtml = markdownToHtmlWith+ yesodDefaultReaderOptions+ yesodDefaultWriterOptions -- | No HTML sanitization+--+-- **NOTE**: Use only with /fully-trusted/ input.+-- markdownToHtmlTrusted :: Markdown -> Either PandocError Html-markdownToHtmlTrusted md = do- p <- parseMarkdown yesodDefaultReaderOptions md- writePandocTrusted yesodDefaultWriterOptions p+markdownToHtmlTrusted = markdownToHtmlWith' id+ yesodDefaultReaderOptions+ yesodDefaultWriterOptions +-- | Process markdown with given extensions+--+-- Uses our options, and overrides extensions only.+--+-- > markdownToHtmlWithExtensions githubMarkdownExtensions+--+markdownToHtmlWithExtensions+ :: Extensions+ -> Markdown+ -> Either PandocError Html+markdownToHtmlWithExtensions exts = markdownToHtmlWith+ yesodDefaultReaderOptions { readerExtensions = exts }+ yesodDefaultWriterOptions { writerExtensions = exts }++-- | Fully controllable Markdown processing+markdownToHtmlWith+ :: ReaderOptions+ -> WriterOptions+ -> Markdown+ -> Either PandocError Html+markdownToHtmlWith = markdownToHtmlWith' sanitizeBalance++-- | Internal function, the only way to skip sanitization+markdownToHtmlWith'+ :: (Text -> Text)+ -> ReaderOptions+ -> WriterOptions+ -> Markdown+ -> Either PandocError Html+markdownToHtmlWith' sanitize ropts wopts =+ writePandocWith sanitize wopts <=< parseMarkdown ropts+ -- | Returns the empty string if the file does not exist markdownFromFile :: FilePath -> IO Markdown markdownFromFile f = do@@ -89,16 +128,26 @@ readFileUtf8 fp = decodeUtf8With lenientDecode <$> B.readFile fp writePandoc :: WriterOptions -> Pandoc -> Either PandocError Html-writePandoc wo p = preEscapedToMarkup . sanitizeBalance <$> writeHTML wo p+writePandoc = writePandocWith sanitizeBalance+{-# DEPRECATED writePandoc "Don't use this directly" #-} writePandocTrusted :: WriterOptions -> Pandoc -> Either PandocError Html-writePandocTrusted wo p = preEscapedToMarkup <$> writeHTML wo p+writePandocTrusted = writePandocWith id+{-# DEPRECATED writePandocTrusted "Don't use this directly" #-} -writeHTML :: WriterOptions -> Pandoc -> Either PandocError Text-writeHTML wo = runPure . writeHtml5String wo+writePandocWith+ :: (Text -> Text)+ -> WriterOptions+ -> Pandoc+ -> Either PandocError Html+writePandocWith f wo+ = (preEscapedToMarkup . f <$>)+ . runPure+ . writeHtml5String wo parseMarkdown :: ReaderOptions -> Markdown -> Either PandocError Pandoc parseMarkdown ro = runPure . readMarkdown ro . unMarkdown+{-# DEPRECATED parseMarkdown "Don't use this directly" #-} -- | Defaults minus WrapText, plus our extensions yesodDefaultWriterOptions :: WriterOptions
yesod-markdown.cabal view
@@ -2,10 +2,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: dc5e40c81025510f684eb2401cfe1a60cfe62cd7fc7e4d1264560d95e0c72d59+-- hash: b7e83808360b85c8c862b1daa225c4a7fa6509a8084cbab7a2933e66ee33be18 name: yesod-markdown-version: 0.12.2+version: 0.12.3 synopsis: Tools for using markdown in a yesod application description: A subset of Pandoc functionality useful for markdown processing in yesod applications category: Web, Yesod