packages feed

record 0.1.1 → 0.1.2

raw patch · 5 files changed

+168/−6 lines, 5 filesdep +directorydep +doctestdep +filepathdep ~basedep ~base-preludebuild-type:Customsetup-changedPVP ok

version bump matches the API change (PVP)

Dependencies added: directory, doctest, filepath

Dependency ranges changed: base, base-prelude

API changes (from Hackage documentation)

Files

CHANGELOG.md view
@@ -1,2 +1,5 @@+# 0.1.2+* Fix Integers getting parsed as Rationals (#2)+ # 0.1.1 * Implement the List type parsing
Setup.hs view
@@ -1,2 +1,42 @@-import Distribution.Simple-main = defaultMain+-- The code is mostly ripped from+-- https://github.com/ekmett/lens/blob/697582fb9a980f273dbf8496253c5bbefedd0a8b/Setup.lhs+import Data.List ( nub )+import Data.Version ( showVersion )+import Distribution.Package ( PackageName(PackageName), Package, PackageId, InstalledPackageId, packageVersion, packageName )+import Distribution.PackageDescription ( PackageDescription(), TestSuite(..) )+import Distribution.Simple ( defaultMainWithHooks, UserHooks(..), simpleUserHooks )+import Distribution.Simple.Utils ( rewriteFile, createDirectoryIfMissingVerbose, copyFiles )+import Distribution.Simple.BuildPaths ( autogenModulesDir )+import Distribution.Simple.Setup ( BuildFlags(buildVerbosity), Flag(..), fromFlag, HaddockFlags(haddockDistPref))+import Distribution.Simple.LocalBuildInfo ( withLibLBI, withTestLBI, LocalBuildInfo(), ComponentLocalBuildInfo(componentPackageDeps) )+import Distribution.Text ( display )+import Distribution.Verbosity ( Verbosity, normal )+import System.FilePath ( (</>) )++main :: IO ()+main = defaultMainWithHooks simpleUserHooks+  { buildHook = \pkg lbi hooks flags -> do+     generateBuildModule (fromFlag (buildVerbosity flags)) pkg lbi+     buildHook simpleUserHooks pkg lbi hooks flags+  }++generateBuildModule :: Verbosity -> PackageDescription -> LocalBuildInfo -> IO ()+generateBuildModule verbosity pkg lbi = do+  let dir = autogenModulesDir lbi+  createDirectoryIfMissingVerbose verbosity True dir+  withLibLBI pkg lbi $ \_ libcfg -> do+    withTestLBI pkg lbi $ \suite suitecfg -> do+      rewriteFile (dir </> "Build_" ++ testName suite ++ ".hs") $ unlines+        [ "module Build_" ++ testName suite ++ " where"+        , "import Prelude"+        , "deps :: [String]"+        , "deps = " ++ (show $ formatdeps (testDeps libcfg suitecfg))+        ]+  where+    formatdeps = map (formatone . snd)+    formatone p = case packageName p of+      PackageName n -> n ++ "-" ++ showVersion (packageVersion p)++testDeps :: ComponentLocalBuildInfo -> ComponentLocalBuildInfo -> [(InstalledPackageId, PackageId)]+testDeps xs ys = nub $ componentPackageDeps xs ++ componentPackageDeps ys+
+ doctest/Main.hs view
@@ -0,0 +1,66 @@+-- The code is mostly ripped from+-- https://github.com/ekmett/lens/blob/d1d97469f0e93c1d3535308954a060e8a04e37aa/tests/doctests.hsc+import BasePrelude+import System.Directory+import System.FilePath+import Test.DocTest+import Build_doctest (deps)++main :: IO ()+main = do+  sources <- getSources+  doctest $ dfltParams ++ map ("-package="++) deps ++ sources+  where+    dfltParams = +      [+        "-isrc",+        "-idist/build/autogen",+        "-optP-include",+        "-optPdist/build/autogen/cabal_macros.h",+        "-XArrows",+        "-XBangPatterns",+        "-XConstraintKinds",+        "-XDataKinds",+        "-XDefaultSignatures",+        "-XDeriveDataTypeable",+        "-XDeriveFunctor",+        "-XDeriveGeneric",+        "-XEmptyDataDecls",+        "-XFlexibleContexts",+        "-XFlexibleInstances",+        "-XFunctionalDependencies",+        "-XGADTs",+        "-XGeneralizedNewtypeDeriving",+        "-XImpredicativeTypes",+        "-XLambdaCase",+        "-XLiberalTypeSynonyms",+        "-XMultiParamTypeClasses",+        "-XMultiWayIf",+        "-XNoImplicitPrelude",+        "-XNoMonomorphismRestriction",+        "-XOverloadedStrings",+        "-XPatternGuards",+        "-XParallelListComp",+        "-XQuasiQuotes",+        "-XRankNTypes",+        "-XRecordWildCards",+        "-XScopedTypeVariables",+        "-XStandaloneDeriving",+        "-XTemplateHaskell",+        "-XTupleSections",+        "-XTypeFamilies",+        "-XTypeOperators",+        "-hide-all-packages"+      ]++getSources :: IO [FilePath]+getSources = filter (isSuffixOf ".hs") <$> go "library"+  where+    go dir = do+      (dirs, files) <- getFilesAndDirectories dir+      (files ++) . concat <$> mapM go dirs++getFilesAndDirectories :: FilePath -> IO ([FilePath], [FilePath])+getFilesAndDirectories dir = do+  c <- map (dir </>) . filter (`notElem` ["..", "."]) <$> getDirectoryContents dir+  (,) <$> filterM doesDirectoryExist c <*> filterM doesFileExist c
library/Record/Parser.hs view
@@ -33,6 +33,16 @@         Done _ a -> Right a         Partial c -> onResult (c "") +-- |+-- Run a parser on a given input,+-- lifting its errors to the context parser.+-- +-- Consider it a subparser.+parser :: Parser a -> Text -> Parser a+parser p t =+  either fail return $+  run p t+ labeled :: String -> Parser a -> Parser a labeled =   flip (<?>)@@ -159,6 +169,7 @@   Lit_String Text |   Lit_Integer Integer |   Lit_Rational Rational+  deriving (Show)  exp :: Parser Exp exp =@@ -212,11 +223,30 @@                   sepBy1 exp (skipSpace *> char ',' <* skipSpace) <*                   skipSpace <* char ']' +-- |+-- +-- Integers get parsed as integers:+-- +-- >>> run lit "2"+-- Right (Lit_Integer 2)+-- +-- Rationals get parsed as rationals:+-- +-- >>> run lit "2.0"+-- Right (Lit_Rational (2 % 1))+-- +-- >>> run lit "3e2"+-- Right (Lit_Rational (300 % 1)) lit :: Parser Lit lit =   Lit_Char <$> charLit <|>   Lit_String <$> stringLit <|>-  Lit_Rational <$> rational <|>+  Lit_Rational <$> rationalNotDecimal <|>   Lit_Integer <$> decimal-+  where+    rationalNotDecimal =+      match rational >>= \(t, r) ->+        case run (decimal <* endOfInput) t of+          Left _ -> return r+          _ -> mzero 
record.cabal view
@@ -1,7 +1,7 @@ name:   record version:-  0.1.1+  0.1.2 synopsis:   First class records implemented with quasi-quotation description:@@ -31,7 +31,7 @@ license-file:   LICENSE build-type:-  Simple+  Custom cabal-version:   >=1.10 extra-source-files:@@ -71,6 +71,29 @@     transformers >= 0.2 && < 0.5,     base-prelude >= 0.1 && < 0.2,     base >= 4.6 && < 4.9+++test-suite doctest+  type:+    exitcode-stdio-1.0+  hs-source-dirs:+    doctest+  main-is:+    Main.hs+  ghc-options:+    -threaded+    "-with-rtsopts=-N"+    -funbox-strict-fields+  build-depends:+    doctest == 0.9.*,+    directory == 1.2.*,+    filepath == 1.3.*,+    base-prelude,+    base+  default-extensions:+    Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFunctor, DeriveGeneric, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, ImpredicativeTypes, LambdaCase, LiberalTypeSynonyms, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators+  default-language:+    Haskell2010   -- Well, it's not a benchmark actually,