packages feed

BlogLiterately-diagrams 0.1.3.1 → 0.1.4

raw patch · 3 files changed

+36/−21 lines, 3 filesdep ~diagrams-builder

Dependency ranges changed: diagrams-builder

Files

BlogLiterately-diagrams.cabal view
@@ -1,5 +1,5 @@ name:                BlogLiterately-diagrams-version:             0.1.3.1+version:             0.1.4 synopsis:            Include images in blog posts with inline diagrams code description:         A plugin for @BlogLiterately@ (<http://hackage.haskell.org/package/BlogLiterately>) which turns inline diagrams                      code into images.@@ -50,6 +50,13 @@                      this:                      .                      <<http://projects.haskell.org/diagrams/hosted/BLD-post-result.png>>+                     .+                     In addition to simple diagrams, @IO@ actions+                     producing diagrams may also be used.  In that+                     case the @IO@ action will simply be run, and the+                     resulting diagram rendered.  This can be useful,+                     for example, when producing a diagram built from+                     some external data or using randomness. license:             BSD3 license-file:        LICENSE extra-source-files:  CHANGES@@ -73,7 +80,7 @@                        filepath,                        directory,                        diagrams-cairo >= 1.0 && < 1.1,-                       diagrams-builder >= 0.4.2 && < 0.5,+                       diagrams-builder >= 0.5 && < 0.6,                        diagrams-lib >= 1.0 && < 1.1,                        BlogLiterately >= 0.6 && < 0.8,                        pandoc >= 1.9 && < 1.13,
CHANGES view
@@ -1,3 +1,8 @@+* 0.1.4: 27 January 2014++  - Require diagrams-builder-0.5, which really actually adds support+    for IO actions producing diagrams.+ * 0.1.3.1: 29 November 2013    - Update documentation: doesn't actually support IO actions yet
src/Text/BlogLiterately/Diagrams.hs view
@@ -28,7 +28,8 @@ import           Diagrams.Backend.Cairo import           Diagrams.Backend.Cairo.Internal import qualified Diagrams.Builder                as DB-import           Diagrams.Prelude                (R2, zeroV, (&), (.~))+import           Diagrams.Prelude                (centerXY, pad, zeroV, (&),+                                                  (.~)) import           Diagrams.TwoD.Size              (mkSizeSpec) import           Text.BlogLiterately import           Text.Pandoc@@ -93,24 +94,26 @@ -- | Given some code with declarations, some attributes, and an --   expression to render, render it and return the filename of the --   generated image (or an error message).-renderDiagram :: [String]     -- ^ Declarations+renderDiagram :: Bool         -- ^ Apply padding automatically?+              -> [String]     -- ^ Declarations               -> String       -- ^ Expression to render               -> Attr         -- ^ Code attributes               -> IO (Either String FilePath)-renderDiagram decls expr attr@(_ident, _cls, fields) = do+renderDiagram shouldPad decls expr (_ident, _cls, fields) = do     createDirectoryIfMissing True diaDir-    res <- DB.buildDiagram-           Cairo-           (zeroV :: R2)-           (CairoOptions "default.png" size PNG False)-           decls-           expr-           []-           ["Diagrams.Backend.Cairo"]-           (DB.hashedRegenerate-             (\hash opts -> opts & cairoFileName .~ mkFile hash)-             diaDir-           )++    let bopts = DB.mkBuildOpts Cairo zeroV (CairoOptions "default.png" size PNG False)+                  & DB.snippets .~ decls+                  & DB.imports  .~ ["Diagrams.Backend.Cairo"]+                  & DB.diaExpr  .~ expr+                  & DB.postProcess .~ (if shouldPad then pad 1.1 . centerXY else id)+                  & DB.decideRegen .~+                      (DB.hashedRegenerate+                        (\hash opts -> opts & cairoFileName .~ mkFile hash)+                        diaDir+                      )+    res <- DB.buildDiagram bopts+     case res of       DB.ParseErr err    -> do         let errStr = "\nParse error:\n" ++ err@@ -120,8 +123,8 @@         let errStr = "\nInterpreter error:\n" ++ DB.ppInterpError ierr         putErrLn errStr         return (Left errStr)-      DB.Skipped hash    ->        return (Right $ mkFile hash)-      DB.OK hash (act,_) -> act >> return (Right $ mkFile hash)+      DB.Skipped hash    ->        return (Right $ mkFile (DB.hashToHexStr hash))+      DB.OK hash (act,_) -> act >> return (Right $ mkFile (DB.hashToHexStr hash))    where     size        = mkSizeSpec@@ -133,7 +136,7 @@ renderBlockDiagram defs c@(CodeBlock attr@(_, cls, _) s)     | "dia-def" `elem` classTags = return Null     | "dia"     `elem` classTags = do-        res <- renderDiagram (src : defs) "pad 1.1 dia" attr+        res <- renderDiagram True (src : defs) "dia" attr         case res of           Left  err      -> return (CodeBlock attr (s ++ err))           Right fileName -> return $ Para [Image [] (fileName, "")]@@ -149,7 +152,7 @@ renderInlineDiagram :: [String] -> Inline -> IO Inline renderInlineDiagram defs c@(Code attr@(_, cls, _) expr)     | "dia" `elem` cls = do-        res <- renderDiagram defs expr attr+        res <- renderDiagram False defs expr attr         case res of           Left err       -> return (Code attr (expr ++ err))           Right fileName -> return $ Image [] (fileName, "")