packages feed

salve 0.0.8 → 0.0.9

raw patch · 6 files changed

+51/−146 lines, 6 filesdep −criteriondep −deepseqdep −microlensdep ~basedep ~doctest

Dependencies removed: criterion, deepseq, microlens, salve, semver, semver-range

Dependency ranges changed: base, doctest

Files

− benchmarks/benchmark.hs
@@ -1,99 +0,0 @@-{-# OPTIONS_GHC -fno-warn-orphans #-}--{-# LANGUAGE DeriveAnyClass #-}-{-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE StandaloneDeriving #-}--import qualified Control.DeepSeq as DeepSeq-import qualified Criterion.Main as Criterion-import qualified Data.Maybe as Maybe-import qualified "semver" Data.SemVer as SemVer-import qualified "semver-range" Data.SemVer as SemVerRange-import qualified Data.Version as Version-import qualified GHC.Generics as Ghc-import qualified Salve.Internal as Salve-import qualified Text.ParserCombinators.ReadP as ReadP--deriving instance DeepSeq.NFData Salve.Build-deriving instance DeepSeq.NFData Salve.Constraint-deriving instance DeepSeq.NFData Salve.Operator-deriving instance DeepSeq.NFData Salve.PreRelease-deriving instance DeepSeq.NFData Salve.Version-deriving instance DeepSeq.NFData Salve.Wildcard-deriving instance DeepSeq.NFData SemVerRange.PrereleaseTag-deriving instance DeepSeq.NFData SemVerRange.PrereleaseTags-deriving instance DeepSeq.NFData SemVerRange.SemVer-deriving instance DeepSeq.NFData SemVerRange.SemVerRange-deriving instance Ghc.Generic Salve.Build-deriving instance Ghc.Generic Salve.Constraint-deriving instance Ghc.Generic Salve.Operator-deriving instance Ghc.Generic Salve.PreRelease-deriving instance Ghc.Generic Salve.Version-deriving instance Ghc.Generic Salve.Wildcard-deriving instance Ghc.Generic SemVerRange.SemVerRange--main :: IO ()-main = Criterion.defaultMain-  [ Criterion.bgroup "version"-    [ Criterion.bgroup "parse"-      [ Criterion.bgroup "simple"-        [ Criterion.bench "base" $ Criterion.nf (runReadP Version.parseVersion) "0.0.0"-        , Criterion.bench "salve" $ Criterion.nf Salve.parseVersion "0.0.0"-        , Criterion.bench "semver" $ Criterion.nf (fromRight . SemVer.fromText) "0.0.0"-        , Criterion.bench "semver-range" $ Criterion.nf (fromRight . SemVerRange.parseSemVer) "0.0.0"-        ]-      , Criterion.bgroup "complex"-        [ Criterion.bench "base" $ Criterion.nf (runReadP Version.parseVersion) "1.22.333-pre-build"-        , Criterion.bench "salve" $ Criterion.nf Salve.parseVersion "1.22.333-pre+build"-        , Criterion.bench "semver" $ Criterion.nf (fromRight . SemVer.fromText) "1.22.333-pre+build"-        , Criterion.bench "semver-range" $ Criterion.nf (fromRight . SemVerRange.parseSemVer) "1.22.333-pre+build"-        ]-      ]-    , Criterion.bgroup "render"-      [ Criterion.bgroup "simple"-        [ let Just v = runReadP Version.parseVersion "0.0.0" in Criterion.bench "base" $ Criterion.nf Version.showVersion v-        , let v = Salve.unsafeParseVersion "0.0.0" in Criterion.bench "salve" $ Criterion.nf Salve.renderVersion v-        , let Right v = SemVer.fromText "0.0.0" in Criterion.bench "semver" $ Criterion.nf SemVer.toText v-        , let Right v = SemVerRange.parseSemVer "0.0.0" in Criterion.bench "semver-range" $ Criterion.nf SemVerRange.renderSV v-        ]-      , Criterion.bgroup "complex"-        [ let Just v = runReadP Version.parseVersion "1.22.333-pre-build" in Criterion.bench "base" $ Criterion.nf Version.showVersion v-        , let v = Salve.unsafeParseVersion "1.22.333-pre+build" in Criterion.bench "salve" $ Criterion.nf Salve.renderVersion v-        , let Right v = SemVer.fromText "1.22.333-pre+build" in Criterion.bench "semver" $ Criterion.nf SemVer.toText v-        , let Right v = SemVerRange.parseSemVer "1.22.333-pre+build" in Criterion.bench "semver-range" $ Criterion.nf SemVerRange.renderSV v-        ]-      ]-    ]-  , Criterion.bgroup "constraint"-    [ Criterion.bgroup "parse"-      [ Criterion.bgroup "simple"-        [ Criterion.bench "salve" $ Criterion.nf Salve.parseConstraint "0.0.0"-        , Criterion.bench "semver-range" $ Criterion.nf (fromRight . SemVerRange.parseSemVerRange) "0.0.0"-        ]-      , Criterion.bgroup "complex"-        [ Criterion.bench "salve" $ Criterion.nf Salve.parseConstraint "<1.2.0 <=1.2.1 || =1.2.2 >=1.2.3 || >1.2.4 1.2.5 || 1.2.6 - 1.2.7 ~1.2.8 || ^1.2.9"-        , Criterion.bench "semver-range" $ Criterion.nf (fromRight . SemVerRange.parseSemVerRange) "<1.2.0 <=1.2.1 || =1.2.2 >=1.2.3 || >1.2.4 1.2.5 || 1.2.6 - 1.2.7 ~1.2.8 || ^1.2.9"-        ]-      ]-    , Criterion.bgroup "render"-      [ Criterion.bgroup "simple"-        [ let c = Salve.unsafeParseConstraint "0.0.0" in Criterion.bench "salve" $ Criterion.nf Salve.renderConstraint c-        ]-      , Criterion.bgroup "complex"-        [ let c = Salve.unsafeParseConstraint "<1.2.0 <=1.2.1 || =1.2.2 >=1.2.3 || >1.2.4 1.2.5 || 1.2.6 - 1.2.7 ~1.2.8 || ^1.2.9" in Criterion.bench "salve" $ Criterion.nf Salve.renderConstraint c-        ]-      ]-    ]-  ]--fromRight :: Either a b -> Maybe b-fromRight e = case e of-  Left _ -> Nothing-  Right r -> Just r--runReadP :: ReadP.ReadP a -> String -> Maybe a-runReadP parser string = Maybe.listToMaybe (do-  (x, "") <- ReadP.readP_to_S parser string-  pure x)
library/Salve.hs view
@@ -248,15 +248,18 @@ -- >>> parseVersion "0.0.0.0" -- Nothing ----- Spaces are not allowed.+-- Spaces are allowed -- -- >>> parseVersion " 0.0.0"--- Nothing+-- Just (Version {versionMajor = 0, versionMinor = 0, versionPatch = 0, versionPreReleases = [], versionBuilds = []})+-- >>> parseVersion "0.0.0 "+-- Just (Version {versionMajor = 0, versionMinor = 0, versionPatch = 0, versionPreReleases = [], versionBuilds = []})+--+-- Interior spaces are not allowed.+-- -- >>> parseVersion "0 .0.0" -- Nothing -- >>> parseVersion "0. 0.0"--- Nothing--- >>> parseVersion "0.0.0 " -- Nothing -- -- Each version component cannot be larger than a 64-bit unsigned integer.
library/Salve/Internal.hs view
@@ -1,3 +1,6 @@+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric #-}+ -- | WARNING: This module should be considered private! If you find yourself -- wanting to import something from this module, please open an issue to get -- that thing exported from "Salve".@@ -5,18 +8,25 @@  import qualified Control.Monad as Monad import qualified Data.Char as Char+import qualified Data.Data as Data import qualified Data.List as List import qualified Data.Maybe as Maybe import qualified Data.Monoid as Monoid import qualified Data.Ord as Ord import qualified Data.Version as Version import qualified Data.Word as Word+import qualified GHC.Generics as Generics import qualified Text.ParserCombinators.ReadP as ReadP  -- $setup--- >>> import Control.Applicative--- >>> import Lens.Micro--- >>> let view l x = x ^. l+--+-- >>> import Control.Applicative (Const(..))+-- >>> let view lens record = getConst (lens Const record)+--+-- >>> import Data.Functor.Identity (Identity(..))+-- >>> let set lens field record = runIdentity (lens (const (Identity field)) record)+--+-- >>> import Control.Applicative ((<$>), (<*>))  -- * Public @@ -35,7 +45,7 @@   , versionPatch :: Word.Word64   , versionPreReleases :: [PreRelease]   , versionBuilds :: [Build]-  } deriving (Eq, Show)+  } deriving (Data.Data, Eq, Generics.Generic, Read, Show, Data.Typeable)  -- | In general, versions compare in the way that you would expect. First the -- major version numbers are compared, then the minors, then the patches.@@ -98,7 +108,7 @@ data PreRelease   = PreReleaseNumeric Word.Word64   | PreReleaseTextual String-  deriving (Eq, Show)+  deriving (Data.Data, Eq, Generics.Generic, Read, Show, Data.Typeable)  -- | Numeric pre-releases are always less than textual pre-releases. --@@ -130,7 +140,8 @@ -- 3. Builds cannot be compared. That is, they do not have an 'Ord' instance. -- -- Use 'parseBuild' to create builds.-newtype Build = Build String deriving (Eq, Show)+newtype Build = Build String+  deriving (Data.Data, Eq, Generics.Generic, Read, Show, Data.Typeable)  -- | Constrains allowable version numbers. --@@ -142,7 +153,7 @@   | ConstraintWildcard Wildcard   | ConstraintAnd Constraint Constraint   | ConstraintOr Constraint Constraint-  deriving (Eq, Show)+  deriving (Data.Data, Eq, Generics.Generic, Ord, Read, Show, Data.Typeable)  -- | Makes a new version number. --@@ -178,12 +189,18 @@ -- >>> parseVersion "wrong" -- Nothing ----- Whitespace is not allowed and will cause the parser to fail.+-- Whitespace is allowed. -- -- >>> parseVersion " 1.2.3 "--- Nothing+-- Just (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}) parseVersion :: String -> Maybe Version-parseVersion s = parse versionP s+parseVersion s = parse+  (do+    ReadP.skipSpaces+    version <- versionP+    ReadP.skipSpaces+    return version)+  s  -- | Attempts to parse a pre-release. --@@ -586,13 +603,13 @@   | OperatorGT   | OperatorTilde   | OperatorCaret-  deriving (Eq, Show)+  deriving (Data.Data, Eq, Generics.Generic, Ord, Read, Show, Data.Typeable)  data Wildcard   = WildcardMajor   | WildcardMinor Word.Word64   | WildcardPatch Word.Word64 Word.Word64-  deriving (Eq, Show)+  deriving (Data.Data, Eq, Generics.Generic, Ord, Read, Show, Data.Typeable)  -- ** Constructors @@ -746,7 +763,7 @@   ys <- ReadP.munch Char.isDigit   case toWord64 (stringToIntegral (x : ys)) of     Nothing -> ReadP.pfail-    Just n -> pure n+    Just n -> return n  constraintsP :: ReadP.ReadP Constraint constraintsP = do@@ -899,7 +916,7 @@   | SCGT Version   | SCAnd SimpleConstraint SimpleConstraint   | SCOr SimpleConstraint SimpleConstraint-  deriving (Eq, Show)+  deriving (Data.Data, Eq, Generics.Generic, Ord, Read, Show, Data.Typeable)  mkV :: Word.Word64 -> Word.Word64 -> Word.Word64 -> Version mkV m n p = makeVersion m n p [] []
salve.cabal view
@@ -3,7 +3,7 @@ -- see: https://github.com/sol/hpack  name:           salve-version:        0.0.8+version:        0.0.9 synopsis:       Semantic version numbers and constraints. description:    Salve provides semantic version (SemVer) numbers and constraints (ranges). category:       Distribution@@ -28,7 +28,7 @@       library   ghc-options: -Wall   build-depends:-      base >=4.7.0 && <4.11+      base >=4.8.2 && <4.11   exposed-modules:       Salve       Salve.Internal@@ -36,27 +36,11 @@  test-suite doctest   type: exitcode-stdio-1.0-  main-is: doctest.hs+  main-is: Main.hs   hs-source-dirs:       tests-  ghc-options: -Wall-  build-depends:-      base >=4.7.0 && <4.11-    , doctest >=0.9.11 && <0.14-    , microlens >=0.2.0 && <0.5-  default-language: Haskell2010--benchmark benchmark-  type: exitcode-stdio-1.0-  main-is: benchmark.hs-  hs-source-dirs:-      benchmarks-  ghc-options: -Wall+  ghc-options: -Wall -rtsopts -threaded   build-depends:-      base >=4.7.0 && <4.11-    , criterion >=1.1.0 && <1.3-    , deepseq >=1.4.1 && <1.5-    , salve-    , semver >=0.3.3 && <0.4-    , semver-range >=0.2.2 && <0.3+      base >=4.8.2 && <4.11+    , doctest >=0.11.2 && <0.14   default-language: Haskell2010
+ tests/Main.hs view
@@ -0,0 +1,7 @@+import Test.DocTest++main :: IO ()+main = doctest+  [ "library/Salve/Internal.hs"+  , "library/Salve.hs"+  ]
− tests/doctest.hs
@@ -1,7 +0,0 @@-import Test.DocTest--main :: IO ()-main = doctest-  [ "library/Salve/Internal.hs"-  , "library/Salve.hs"-  ]