packages feed

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 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