git.iko.soy/typeable/schematic
on master help sign in
Convenience isos
commitf48d8079880b56bcf4843c84ca6607f4089d0ac4 authorDenis Redozubov <denis.redozubov@gmail.com> dateFri 3 Nov 2017, 19:09 (9 years ago) parentcc9b298
1 file changed+32−1
src/Data/Schematic/Lens.hs+32−1
src/Data/Schematic/Lens.hs+32−1
@@ -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
@@ -179,10 +185,35 @@ optionalRepr
179185 => Iso' (FieldRepr '(fn, ('SchemaOptional schema))) (Maybe (JsonRepr schema))
180186optionalRepr = iso (\(FieldRepr (ReprOptional r)) -> r) (FieldRepr . ReprOptional)
181187
182−obj :: (SingI fields) => Iso' (JsonRepr ('SchemaObject fields)) (Rec FieldRepr fields)
188+obj
189+ :: SingI fields
190+ => Iso' (JsonRepr ('SchemaObject fields)) (Rec FieldRepr fields)
183191obj = iso (\(ReprObject r) -> r) ReprObject
184192
185193arr
186194 :: (SingI schema)
187195 => Iso' (JsonRepr ('SchemaArray cs schema)) (V.Vector (JsonRepr schema))
188196arr = iso (\(ReprArray r) -> r) ReprArray
197+
198+uni
199+ :: SingI (h ': tl)
200+ => Iso' (JsonRepr ('SchemaUnion (h ': tl))) (Union JsonRepr (h ': tl))
201+uni = iso (\(ReprUnion u) -> u) ReprUnion
202+
203+txt
204+ :: SingI cs
205+ => Iso' (JsonRepr ('SchemaText cs)) Text
206+txt = iso (\(ReprText t) -> t) ReprText
207+
208+num
209+ :: SingI cs
210+ => Iso' (JsonRepr ('SchemaNumber cs)) Scientific
211+num = iso (\(ReprNumber t) -> t) ReprNumber
212+
213+bln :: Iso' (JsonRepr 'SchemaBoolean) Bool
214+bln = iso (\(ReprBoolean b) -> b) ReprBoolean
215+
216+opt
217+ :: SingI schema
218+ => Iso' (JsonRepr ('SchemaOptional schema)) (Maybe (JsonRepr schema))
219+opt = iso (\(ReprOptional o) -> o) ReprOptional