schematic 0.4.1.0 → 0.4.2.0
raw patch · 3 files changed
+37/−2 lines, 3 files
Files
- ChangeLog.md +4/−0
- schematic.cabal +1/−1
- src/Data/Schematic/Lens.hs +32/−1
ChangeLog.md view
@@ -1,5 +1,9 @@ # Revision history for schematic +## 0.4.1.0 -- 2017-11-05++Convenience isomorphisms: txt, num, opt, bln etc+ ## 0.4.1.0 -- 2017-11-01 flens and fget now use type application syntax
schematic.cabal view
@@ -1,5 +1,5 @@ name: schematic-version: 0.4.1.0+version: 0.4.2.0 synopsis: JSON-biased spec and validation tool license: BSD3 license-file: LICENSE
src/Data/Schematic/Lens.hs view
@@ -10,6 +10,11 @@ , FSubset(..) , obj , arr+ , uni+ , txt+ , num+ , opt+ , bln , textRepr , numberRepr , boolRepr@@ -23,6 +28,7 @@ import Data.Scientific import Data.Singletons import Data.Text+import Data.Union import Data.Vector as V import Data.Vinyl import Data.Vinyl.Functor@@ -179,10 +185,35 @@ => Iso' (FieldRepr '(fn, ('SchemaOptional schema))) (Maybe (JsonRepr schema)) optionalRepr = iso (\(FieldRepr (ReprOptional r)) -> r) (FieldRepr . ReprOptional) -obj :: (SingI fields) => Iso' (JsonRepr ('SchemaObject fields)) (Rec FieldRepr fields)+obj+ :: SingI fields+ => Iso' (JsonRepr ('SchemaObject fields)) (Rec FieldRepr fields) obj = iso (\(ReprObject r) -> r) ReprObject arr :: (SingI schema) => Iso' (JsonRepr ('SchemaArray cs schema)) (V.Vector (JsonRepr schema)) arr = iso (\(ReprArray r) -> r) ReprArray++uni+ :: SingI (h ': tl)+ => Iso' (JsonRepr ('SchemaUnion (h ': tl))) (Union JsonRepr (h ': tl))+uni = iso (\(ReprUnion u) -> u) ReprUnion++txt+ :: SingI cs+ => Iso' (JsonRepr ('SchemaText cs)) Text+txt = iso (\(ReprText t) -> t) ReprText++num+ :: SingI cs+ => Iso' (JsonRepr ('SchemaNumber cs)) Scientific+num = iso (\(ReprNumber t) -> t) ReprNumber++bln :: Iso' (JsonRepr 'SchemaBoolean) Bool+bln = iso (\(ReprBoolean b) -> b) ReprBoolean++opt+ :: SingI schema+ => Iso' (JsonRepr ('SchemaOptional schema)) (Maybe (JsonRepr schema))+opt = iso (\(ReprOptional o) -> o) ReprOptional