on master help sign in
Convenience isos
commitc1f48b7cfb754463c8c18f024b8642bbe6296f43 authorDenis Redozubov <denis.redozubov@gmail.com> dateFri 3 Nov 2017, 19:09 (9 years ago) parent2c74332
1 file changed+29
src/Data/Schematic/Lens.hs+29
src/Data/Schematic/Lens.hs+29
@@ -10,6 +10,11 @@ module Data.Schematic.Lens
1010 , FSubset(..)
1111 , obj
1212 , arr
13+ , uni
14+ , txt
15+ , num
16+ , opt
17+ , bln
1318 , textRepr
1419 , numberRepr
1520 , boolRepr
@@ -23,6 +28,7 @@ import Data.Schematic.Schema
2328import Data.Scientific
2429import Data.Singletons
2530import Data.Text
31+import Data.Union
2632import Data.Vector as V
2733import Data.Vinyl
2834import Data.Vinyl.Functor
@@ -184,3 +190,26 @@ obj = iso (\(ReprObject r) -> r) ReprObject
184190
185191arr :: Iso' (JsonRepr ('SchemaArray cs schema)) (V.Vector (JsonRepr schema))
186192arr = 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