git.iko.soy/typeable/schematic
on master help sign in
Convenience isos
c1f48b7Denis Redozubov
src/Data/Schematic/Lens.hs+29
@@ -10,6 +10,11 @@ module Data.Schematic.Lens
10 , FSubset(..)
10 , FSubset(..)
11 , obj
11 , obj
12 , arr
12 , arr
13+ , uni
14+ , txt
15+ , num
16+ , opt
17+ , bln
13 , textRepr
18 , textRepr
14 , numberRepr
19 , numberRepr
15 , boolRepr
20 , boolRepr
@@ -23,6 +28,7 @@ import Data.Schematic.Schema
23import Data.Scientific
28import Data.Scientific
24import Data.Singletons
29import Data.Singletons
25import Data.Text
30import Data.Text
31+import Data.Union
26import Data.Vector as V
32import Data.Vector as V
27import Data.Vinyl
33import Data.Vinyl
28import Data.Vinyl.Functor
34import Data.Vinyl.Functor
@@ -184,3 +190,26 @@ obj = iso (\(ReprObject r) -> r) ReprObject
184
190
185arr :: Iso' (JsonRepr ('SchemaArray cs schema)) (V.Vector (JsonRepr schema))
191arr :: Iso' (JsonRepr ('SchemaArray cs schema)) (V.Vector (JsonRepr schema))
186arr = iso (\(ReprArray r) -> r) ReprArray
192arr = iso (\(ReprArray r) -> r) ReprArray
193+
194+uni
195+ :: SingI (h ': tl)
196+ => Iso' (JsonRepr ('SchemaUnion (h ': tl))) (Union JsonRepr (h ': tl))
197+uni = iso (\(ReprUnion u) -> u) ReprUnion
198+
199+txt
200+ :: SingI cs
201+ => Iso' (JsonRepr ('SchemaText cs)) Text
202+txt = iso (\(ReprText t) -> t) ReprText
203+
204+num
205+ :: SingI cs
206+ => Iso' (JsonRepr ('SchemaNumber cs)) Scientific
207+num = iso (\(ReprNumber t) -> t) ReprNumber
208+
209+bln :: Iso' (JsonRepr 'SchemaBoolean) Bool
210+bln = iso (\(ReprBoolean b) -> b) ReprBoolean
211+
212+opt
213+ :: SingI schema
214+ => Iso' (JsonRepr ('SchemaOptional schema)) (Maybe (JsonRepr schema))
215+opt = iso (\(ReprOptional o) -> o) ReprOptional