packages feed

diagrams-haddock 0.3.0.10 → 0.4

raw patch · 6 files changed

+102/−87 lines, 6 filesdep +svg-builderdep −lucid-svgdep ~Cabaldep ~QuickCheckdep ~base

Dependencies added: svg-builder

Dependencies removed: lucid-svg

Dependency ranges changed: Cabal, QuickCheck, base, diagrams-builder, diagrams-lib, diagrams-svg, haskell-src-exts, lens

Files

CHANGES.md view
@@ -1,3 +1,15 @@+## [v0.4](https://github.com/diagrams/diagrams-haddock/tree/v0.4) (2016-10-26)++- Build with `ghc-8.0`+- Improved error message when `setup-config` can't be read+- Fix bug in CPP handling+- Replace `lucid-svg` with `svg-builder`+- Allow `diagrams-svg-1.4`+- Require `diagrams-lib-1.4`+- Allow `haskell-src-exts-1.18`+- Allow `diagrams-builder-0.8`+- Allow `lens-4.15`+ ## [v0.3.0.10](https://github.com/diagrams/diagrams-haddock/tree/v0.3.0.10) (2015-12-06)  - allow `haskell-src-exts-1.17.*`
LICENSE view
@@ -1,6 +1,8 @@-Copyright (c) 2013-2015, diagrams-haddock team:+Copyright (c) 2013-2016, diagrams-haddock team:    Daniel Bergey <bergey@alum.mit.edu>+  Christopher Chalmers <c.chalmers@me.com>+  Sidharth Kapur <sidharthkapur1@gmail.com>   Jeffrey Rosenbluth <Jeffrey.Rosenbluth@gmail.com>   Tillmann Vogt <tillk.vogt@googlemail.com>   Ryan Yates <fryguybob@gmail.com>
diagrams-haddock.cabal view
@@ -1,5 +1,5 @@ name:                diagrams-haddock-version:             0.3.0.10+version:             0.4 synopsis:            Preprocessor for embedding diagrams in Haddock documentation description:         diagrams-haddock is a tool for compiling embedded inline                      diagrams code in Haddock documentation, for an@@ -26,7 +26,7 @@ cabal-version:       >=1.10 extra-source-files:  README.md, CHANGES.md, diagrams/*.svg extra-doc-files:     diagrams/*.svg-tested-with:         GHC == 7.8.4, GHC == 7.10.1+tested-with:         GHC == 7.10.2, GHC == 8.0.1  Source-repository head   type: git@@ -34,7 +34,8 @@  library   exposed-modules:     Diagrams.Haddock-  build-depends:       base >= 4.4 && < 4.9,+  other-modules:       Paths_diagrams_haddock+  build-depends:       base >= 4.4 && < 5.0,                        filepath,                        directory,                        mtl >= 2.0 && < 2.3,@@ -43,12 +44,12 @@                        bytestring >= 0.9 && < 0.11,                        strict >= 0.3 && < 0.4,                        parsec >= 3,-                       haskell-src-exts >= 1.16 && < 1.18,-                       lucid-svg >= 0.5 && < 0.7,-                       diagrams-builder >= 0.5 && < 0.8,-                       diagrams-lib >= 0.6 && < 1.4,-                       diagrams-svg >= 0.8.0.1 && < 1.4,-                       lens >= 3.8 && < 4.14,+                       haskell-src-exts >= 1.18 && < 1.19,+                       svg-builder >= 0.1 && < 0.2,+                       diagrams-builder >= 0.5 && < 0.9,+                       diagrams-lib >= 1.4 && < 1.5,+                       diagrams-svg >= 1.4 && < 1.5,+                       lens >= 3.8 && < 4.16,                        linear >= 1.10 && < 1.21,                        cpphs >= 1.15,                        cautious-file >= 1.0 && < 1.1,@@ -67,7 +68,7 @@                        filepath,                        diagrams-haddock,                        cmdargs >= 0.8 && < 0.11,-                       Cabal >= 1.14 && < 1.23,+                       Cabal >= 1.14 && < 1.25,                        cpphs >= 1.15   hs-source-dirs:      tools   default-language:    Haskell2010@@ -77,12 +78,12 @@   main-is:             Tests.hs   build-depends:       base,                        containers >= 0.4 && < 0.6,-                       QuickCheck >= 2.4 && < 2.9,+                       QuickCheck >= 2.4 && < 2.10,                        tasty >= 0.8 && < 0.12,                        tasty-quickcheck >= 0.8 && < 0.9,                        parsec >= 3,-                       lens >= 3.8 && < 4.14,-                       haskell-src-exts >= 1.16 && < 1.17,+                       lens >= 3.8 && < 4.16,+                       haskell-src-exts >= 1.18 && < 1.19,                        diagrams-haddock   hs-source-dirs:      test   default-language:    Haskell2010
src/Diagrams/Haddock.hs view
@@ -1,5 +1,5 @@-{-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE FlexibleContexts           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE OverloadedStrings          #-} {-# LANGUAGE ScopedTypeVariables        #-} {-# LANGUAGE TemplateHaskell            #-}@@ -73,64 +73,68 @@      ) where -import           Control.Applicative             hiding (many, (<|>))-import           Control.Arrow                   (first, (&&&), (***))-import           Control.Lens                    (makeLenses, orOf, traverse,-                                                  view, (%%~), (%~), (&), (.~),-                                                  (^.), _2, _Right)+import           Control.Arrow               (first, (&&&), (***))+import           Control.Lens                (makeLenses, orOf, view, (%%~),+                                              (%~), (&), (.~), (^.), _2, _Right) import           Control.Monad.Writer-import qualified Data.ByteString.Base64.Lazy     as BS64-import qualified Data.ByteString.Lazy            as BS-import qualified Data.ByteString.Lazy.Char8      as BS8-import           Data.Char                       (isSpace)-import           Data.Either                     (lefts, rights)-import           Data.Function                   (on)-import           Data.Generics.Uniplate.Data     (universeBi)-import           Data.List                       (groupBy, intercalate,-                                                  isPrefixOf, partition)-import           Data.List.Split                 (dropBlanks, dropDelims, split,-                                                  whenElt)-import qualified Data.Map                        as M-import           Data.Maybe                      (catMaybes, mapMaybe)-import qualified Data.Set                        as S-import qualified Data.Text.Lazy                  as T-import qualified Data.Text.Lazy.Encoding         as T-import           Language.Haskell.Exts.Annotated hiding (loc)-import qualified Language.Haskell.Exts.Annotated as HSE+import qualified Data.ByteString.Base64.Lazy as BS64+import qualified Data.ByteString.Lazy        as BS+import qualified Data.ByteString.Lazy.Char8  as BS8+import           Data.Char                   (isSpace)+import           Data.Either                 (lefts, rights)+import           Data.Function               (on)+import           Data.Generics.Uniplate.Data (universeBi)+import           Data.List                   (groupBy, intercalate, isPrefixOf,+                                              partition)+import           Data.List.Split             (dropBlanks, dropDelims, split,+                                              whenElt)+import qualified Data.Map                    as M+import           Data.Maybe                  (catMaybes, mapMaybe)+import qualified Data.Set                    as S+import qualified Data.Text.Lazy              as T+import qualified Data.Text.Lazy.Encoding     as T+import qualified Graphics.Svg                as G+import           Language.Haskell.Exts       hiding (loc)+import qualified Language.Haskell.Exts       as HSE import           Language.Preprocessor.Cpphs-import qualified Lucid.Svg                       as L-import           System.Console.ANSI             (setCursorColumn)-import           System.Directory                (copyFile,-                                                  createDirectoryIfMissing,-                                                  doesFileExist)-import           System.FilePath                 (dropExtension, normalise,-                                                  splitDirectories, (<.>),-                                                  (</>))-import qualified System.IO                       as IO-import qualified System.IO.Cautious              as Cautiously-import qualified System.IO.Strict                as Strict+import           System.Console.ANSI         (setCursorColumn)+import           System.Directory            (copyFile,+                                              createDirectoryIfMissing,+                                              doesFileExist)+import           System.FilePath             (dropExtension, normalise,+                                              splitDirectories, (<.>), (</>))+import qualified System.IO                   as IO+import qualified System.IO.Cautious          as Cautiously+import qualified System.IO.Strict            as Strict import           Text.Parsec-import qualified Text.Parsec                     as P+import qualified Text.Parsec                 as P import           Text.Parsec.String -import           Diagrams.Backend.SVG            (Options (..), SVG (..))-import qualified Diagrams.Builder                as DB-import           Diagrams.Prelude                (V2, zero)-import           Diagrams.TwoD.Size              (mkSizeSpec2D)+import           Diagrams.Backend.SVG        (Options (..), SVG (..))+import qualified Diagrams.Builder            as DB+import           Diagrams.Prelude            (V2, zero)+import           Diagrams.TwoD.Size          (mkSizeSpec2D)  ------------------------------------------------------------ -- Utilities ------------------------------------------------------------ +-- | Pretty-print a parse failure at a particular location. showParseFailure :: SrcLoc -> String -> String showParseFailure loc err = unlines [ prettyPrint loc, err ] +-- | A simple monad for collecting a list of error messages.  There is+--   no facility for failing as such---in this model one simply+--   generates an error message and moves on. newtype CollectErrors a = CE { unCE :: Writer [String] a }   deriving (Functor, Applicative, Monad, MonadWriter [String]) +-- | Generate an error message and fail (by returning @Nothing@). failWith :: String -> CollectErrors (Maybe a) failWith err = tell [err] >> return Nothing +-- | Run a @CollectErrors@ computation, resulting in a value of type+--   @a@ along with the collection of generated error messages. runCE :: CollectErrors a -> (a, [String]) runCE = runWriter . unCE @@ -455,7 +459,7 @@          let                      bopts :: DB.BuildOpts SVG V2 Double-                     bopts = DB.mkBuildOpts SVG zero (SVGOptions (mkSizeSpec2D w h) Nothing "")+                     bopts = DB.mkBuildOpts SVG zero (SVGOptions (mkSizeSpec2D w h) Nothing "" [] False)                       & DB.snippets .~ map (view codeBlockCode) neededCode                       & DB.imports  .~ [ "Diagrams.Backend.SVG" ]                       & DB.diaExpr  .~ (url ^. diagramName)@@ -483,7 +487,7 @@             else return (newURL outFile)         DB.OK hash svg     -> do           let cached = mkCached (DB.hashToHexStr hash)-              svgBS  = L.renderBS svg+              svgBS  = G.renderBS svg           liftIO $ BS.writeFile cached svgBS           url' <- if dataURIs                     then return (newURL (mkDataURI svgBS))@@ -574,10 +578,11 @@               when changed $ Cautiously.writeFileL file (T.encodeUtf8 . T.pack $ src')               return (msgs ++ msgs2)   where-    go src =-      case runCE (parseCodeBlocks file src) of-        r@(Nothing, msgs) -> if any (("Parse error: #" `elem`) . lines) msgs-                             then runCpp src >>= return . runCE . parseCodeBlocks file-                             else return r-        r -> return r+    go src | needsCPP src = runCpp src >>= return . runCE . parseCodeBlocks file+           | otherwise    = return $ runCE (parseCodeBlocks file src)++    needsCPP src = case readExtensions src of+                     Just (_, es) | EnableExtension CPP `elem` es -> True+                     _                                            -> False+     runCpp s = runCpphs opts file s
test/Tests.hs view
@@ -2,17 +2,15 @@  module Main where -import           Control.Applicative-import           Control.Lens                    (view)-import           Data.Either                     (rights)-import           Data.List                       ((\\))-import qualified Data.Map                        as M-import qualified Data.Set                        as S-import           Language.Haskell.Exts.Annotated+import           Control.Lens          (view)+import           Data.Either           (rights)+import           Data.List             ((\\))+import qualified Data.Map              as M+import qualified Data.Set              as S import           Test.QuickCheck import           Test.Tasty-import           Test.Tasty.QuickCheck           as QC-import qualified Text.Parsec                     as P+import           Test.Tasty.QuickCheck as QC+import qualified Text.Parsec           as P  import           Diagrams.Haddock @@ -47,19 +45,6 @@     where       s    = getEString <$> arbitrary       opts = (M.fromList . (map . both) getEString) <$> arbitrary--instance Arbitrary SrcSpan where-  arbitrary = do-    NonEmpty fName  <- arbitrary-    Positive startLn <- arbitrary-    NonNegative startCol  <- arbitrary-    NonNegative numLines  <- arbitrary-    NonNegative numCols   <- arbitrary--    return $ SrcSpan fName startLn startCol (startLn + numLines) (startCol + numCols)--instance Arbitrary Comment where-  arbitrary = Comment <$> arbitrary <*> arbitrary <*> arbitrary  prop_parseDisplay :: DiagramURL -> Bool prop_parseDisplay d
tools/diagrams-haddock.hs view
@@ -15,6 +15,7 @@ import qualified Distribution.PackageDescription    as P import           Distribution.Simple.Configure      (maybeGetPersistBuildConfig) import           Distribution.Simple.LocalBuildInfo (localPkgDescr)+import           Distribution.Simple.Utils          (cabalVersion)  import           Language.Preprocessor.Cpphs @@ -75,7 +76,8 @@   }   &= program "diagrams-haddock"   &= summary (unlines-       [ "diagrams-haddock v" ++ showVersion version ++ ", (c) 2013 diagrams-haddock team (see LICENSE)"+       [ "diagrams-haddock v" ++ showVersion version ++ ", (c) 2013-2016 diagrams-haddock team (see LICENSE)"+       , "compiled using version " ++ showVersion cabalVersion ++ " of the Cabal library"        , ""        , "Compile inline diagrams code in Haddock documentation."        , ""@@ -126,8 +128,16 @@    mlbi <- maybeGetPersistBuildConfig fullDistDir   case mlbi of-    Nothing -> putStrLn $-      "No setup-config found in " ++ fullDistDir ++ ", please run 'cabal configure' first."+    Nothing -> putStrLn $ unlines [+        "diagrams-haddock: No appropriate setup-config found in " ++ fullDistDir+      , "Either it does not exist or it is in the wrong format."+      , "* You may need to run 'cabal configure' first."+      , "* Make sure that the version of Cabal used to compile"+      , "  diagrams-haddock (" ++ showVersion cabalVersion ++ ") matches the version used"+      , "  by the cabal tool."+      , "* Use the -d option if you want diagrams-haddock to look in"+      , "  a different dist directory."+      ]     Just lbi -> do       let mlib = P.library . localPkgDescr $ lbi       case mlib of