packages feed

validity-containers 0.1.0.3 → 0.5.0.5

raw patch · 10 files changed

Files

+ CHANGELOG.md view
@@ -0,0 +1,43 @@+# Changelog++## [0.5.0.5] - 2024-09-19++### Added++* `Validity v => Validity (IntMap v)`++## [0.5.0.4] - 2020-06-17++### Added++* `distinctOrd`++## [0.5.0.3] - 2020-04-23++### Changed++* The same as 0.5.0.2, but now it actually works.++## [0.5.0.2] - 2020-04-23++### Changed++* Exposed `decorateMap` from `Data.Validity.Containers`++## [0.5.0.1] - 2019-09-23++### Changed++* Improved the cabal file+* Used `++` instead of `<>` for a string, for compatibility purposes++## [0.5.0.0] - 2019-09-23++### Added++* `decorateMap`++### Changed++* The validity instance for maps now requires that keys are `Show`able.+
LICENSE view
@@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2016 Tom Sydney Kerckhove+Copyright (c) 2016-2021 Tom Sydney Kerckhove  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal
− Setup.hs
@@ -1,3 +0,0 @@-import Distribution.Simple--main = defaultMain
src/Data/Validity/Containers.hs view
@@ -1,6 +1,17 @@-module Data.Validity.Containers where+{-# OPTIONS_GHC -fno-warn-dodgy-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-} -import Data.Validity.Map as Containers ()-import Data.Validity.Sequence as Containers ()-import Data.Validity.Set as Containers ()-import Data.Validity.Tree as Containers ()+module Data.Validity.Containers+  ( module Data.Validity.Map,+    module Data.Validity.IntMap,+    module Data.Validity.Sequence,+    module Data.Validity.Set,+    module Data.Validity.Tree,+  )+where++import Data.Validity.IntMap+import Data.Validity.Map+import Data.Validity.Sequence+import Data.Validity.Set+import Data.Validity.Tree
+ src/Data/Validity/IntMap.hs view
@@ -0,0 +1,22 @@+{-# OPTIONS_GHC -fno-warn-orphans #-}++module Data.Validity.IntMap+  ( decorateIntMap,+  )+where++import Data.IntMap (IntMap)+import qualified Data.IntMap as IM+import Data.Validity++-- | A 'IntMap' of things is valid if all the keys and values are valid and the 'IntMap' itself+-- is valid.+instance (Validity v) => Validity (IntMap v) where+  validate m =+    decorate "IntMap elements" $+      decorateIntMap m validate++decorateIntMap :: IntMap v -> (v -> Validation) -> Validation+decorateIntMap m func = IM.foldMapWithKey go m+  where+    go k v = decorate ("The key/value at key " ++ show k) $ func v
src/Data/Validity/Map.hs view
@@ -1,14 +1,26 @@ {-# OPTIONS_GHC -fno-warn-orphans #-} -module Data.Validity.Map where--import Data.Validity+module Data.Validity.Map+  ( decorateMap,+  )+where  import Data.Map (Map) import qualified Data.Map as M+import Data.Validity  -- | A 'Map' of things is valid if all the keys and values are valid and the 'Map' itself -- is valid.-instance (Ord k, Validity k, Validity v) =>-         Validity (Map k v) where-    isValid m = M.valid m && all isValid (M.toList m)+instance (Show k, Ord k, Validity k, Validity v) => Validity (Map k v) where+  validate m =+    mconcat+      [ declare "The Map structure is valid." $ M.valid m,+        decorate "Map elements" $+          decorateMap m $+            \k v -> mconcat [delve "The key" k, delve "The value" v]+      ]++decorateMap :: (Show k) => Map k v -> (k -> v -> Validation) -> Validation+decorateMap m func = M.foldMapWithKey go m+  where+    go k v = decorate ("The key/value at key " ++ show k) $ func k v
src/Data/Validity/Sequence.hs view
@@ -2,12 +2,10 @@  module Data.Validity.Sequence where -import Data.Validity- import Data.Foldable (toList) import Data.Sequence (Seq)+import Data.Validity  -- | A 'Seq'uence of things is valid if all the elements are valid.-instance Validity v =>-         Validity (Seq v) where-    isValid = all isValid . toList+instance (Validity v) => Validity (Seq v) where+  validate s = annotate (toList s) "Seq elements"
src/Data/Validity/Set.hs view
@@ -2,13 +2,19 @@  module Data.Validity.Set where -import Data.Validity-+import Data.Containers.ListUtils import Data.Set (Set) import qualified Data.Set as S+import Data.Validity  -- | A 'Set' of things is valid if all the elements are valid and the 'Set' itself -- is valid.-instance (Ord v, Validity v) =>-         Validity (Set v) where-    isValid s = S.valid s && all isValid (S.toList s)+instance (Ord v, Validity v) => Validity (Set v) where+  validate s =+    mconcat+      [ declare "The set structure is valid." $ S.valid s,+        annotate (S.toList s) "Set elements"+      ]++distinctOrd :: (Ord a) => [a] -> Bool+distinctOrd ls = nubOrd ls == ls
src/Data/Validity/Tree.hs view
@@ -2,11 +2,10 @@  module Data.Validity.Tree where -import Data.Validity- import Data.Tree+import Data.Validity  -- | A 'Tree' of things is valid if all the things in the 'Tree' are valid.-instance Validity a =>-         Validity (Tree a) where-    isValid (Node rl sf) = isValid rl && isValid sf+instance (Validity a) => Validity (Tree a) where+  validate (Node rl sf) =+    mconcat [annotate rl "rootLabel", annotate sf "subForest"]
validity-containers.cabal view
@@ -1,33 +1,42 @@-name: validity-containers-version: 0.1.0.3-cabal-version: >=1.10-build-type: Simple-license: MIT-license-file: LICENSE-copyright: Copyright: (c) 2016 Tom Sydney Kerckhove-maintainer: syd.kerckhove@gmail.com-homepage: https://github.com/NorfairKing/validity#readme-synopsis: Validity instances for containers-description:-    Please see README.md-category: Validity-author: Tom Sydney Kerckhove+cabal-version: 1.12 +-- This file has been generated from package.yaml by hpack version 0.36.0.+--+-- see: https://github.com/sol/hpack++name:           validity-containers+version:        0.5.0.5+synopsis:       Validity instances for containers+category:       Validity+homepage:       https://github.com/NorfairKing/validity#readme+bug-reports:    https://github.com/NorfairKing/validity/issues+author:         Tom Sydney Kerckhove+maintainer:     syd@cs-syd.eu+copyright:      Copyright: (c) 2016-2021 Tom Sydney Kerckhove+license:        MIT+license-file:   LICENSE+build-type:     Simple+extra-source-files:+    CHANGELOG.md+ source-repository head-    type: git-    location: https://github.com/NorfairKing/validity+  type: git+  location: https://github.com/NorfairKing/validity  library-    exposed-modules:-        Data.Validity.Containers-        Data.Validity.Tree-        Data.Validity.Map-        Data.Validity.Sequence-        Data.Validity.Set-    build-depends:-        base >= 4.7 && <5,-        validity >=0.3 && <0.4,-        containers -any-    default-language: Haskell2010-    hs-source-dirs: src-+  exposed-modules:+      Data.Validity.Containers+      Data.Validity.IntMap+      Data.Validity.Map+      Data.Validity.Sequence+      Data.Validity.Set+      Data.Validity.Tree+  other-modules:+      Paths_validity_containers+  hs-source-dirs:+      src+  build-depends:+      base >=4.7 && <5+    , containers >=0.6.0.1+    , validity >=0.5+  default-language: Haskell2010