validity-containers 0.1.0.3 → 0.5.0.5
raw patch · 10 files changed
Files
- CHANGELOG.md +43/−0
- LICENSE +1/−1
- Setup.hs +0/−3
- src/Data/Validity/Containers.hs +16/−5
- src/Data/Validity/IntMap.hs +22/−0
- src/Data/Validity/Map.hs +18/−6
- src/Data/Validity/Sequence.hs +3/−5
- src/Data/Validity/Set.hs +11/−5
- src/Data/Validity/Tree.hs +4/−5
- validity-containers.cabal +38/−29
+ 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