namespace 0.1.1.0 → 0.1.2.0
raw patch · 3 files changed
+11/−5 lines, 3 filesdep +monoid-extrasdep ~containersPVP ok
version bump matches the API change (PVP)
Dependencies added: monoid-extras
Dependency ranges changed: containers
API changes (from Hackage documentation)
+ Data.Namespace.Path: instance Data.Namespace.Path.Key k => Data.Monoid.Action.Action (Data.Namespace.Path.NamespacePath k) (Data.Namespace.Path.ObjectPath k)
Files
- namespace.cabal +3/−2
- src/Data/Namespace/Namespace.hs +3/−2
- src/Data/Namespace/Path.hs +5/−1
namespace.cabal view
@@ -1,5 +1,5 @@ name: namespace-version: 0.1.1.0+version: 0.1.2.0 synopsis: A Generic Haskell library for managing namespaces description: Please see README.md homepage: https://github.com/xu-hao/namespace@@ -17,7 +17,8 @@ hs-source-dirs: src exposed-modules: Data.Namespace.Namespace Data.Namespace.Path build-depends: base >= 4.7 && < 5,- containers+ monoid-extras >= 0.1 && < 0.5,+ containers >= 0.5 && < 0.6 default-language: Haskell2010 test-suite namespace-test
src/Data/Namespace/Namespace.hs view
@@ -9,6 +9,7 @@ import Prelude hiding (lookup) import Data.Map.Strict import Data.Monoid+import Data.Monoid.Action (act) import Data.Maybe import Control.Monad import Control.Applicative@@ -42,10 +43,10 @@ topLevelNamespaces (Namespace nm _) = nm concatKey :: Key k => k -> Map (ObjectPath k) a -> Map (ObjectPath k) a-concatKey key = foldrWithKey (\key2 o m -> insert (concatNamespacePathWithObjectPath (NamespacePath [key]) key2) o m ) mempty+concatKey key = mapKeys (act (NamespacePath [key])) pathKey :: Key k => Map k a -> Map (ObjectPath k) a-pathKey = foldrWithKey (\key o m -> insert (ObjectPath (NamespacePath []) key) o m ) mempty+pathKey = mapKeys (ObjectPath (NamespacePath [])) allObjects :: Key k => Namespace k a -> Map (ObjectPath k) a allObjects ns = pathKey (topLevelObjects ns) <> mconcat (elems (mapWithKey (\key ns2 -> concatKey key (allObjects ns2)) (topLevelNamespaces ns)))
src/Data/Namespace/Path.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE RankNTypes, GADTs, StandaloneDeriving, FlexibleInstances, PatternSynonyms #-}+{-# LANGUAGE RankNTypes, GADTs, StandaloneDeriving, FlexibleInstances, MultiParamTypeClasses #-} module Data.Namespace.Path ( NamespacePath(..), ObjectPath(..), extendNamespacePath, concatNamespacePathWithObjectPath, qualified, Key,@@ -7,6 +7,7 @@ import Prelude hiding (lookup) import Data.Map.Strict import Data.Monoid+import Data.Monoid.Action class Ord k => Key k where @@ -35,6 +36,9 @@ concatNamespacePathWithObjectPath :: Key k => NamespacePath k -> ObjectPath k -> ObjectPath k concatNamespacePathWithObjectPath np (ObjectPath np2 k) = ObjectPath (np <> np2) k++instance Key k => Action (NamespacePath k) (ObjectPath k) where+ act = concatNamespacePathWithObjectPath qualified :: Key k => ObjectPath k -> Bool qualified (ObjectPath (NamespacePath []) _) = False