Portability | non-portable |
---|---|
Stability | experimental |
Maintainer | Edward Kmett <ekmett@gmail.com> |
Safe Haskell | Trustworthy |
- class AsNumber t where
- _Integral :: (AsNumber t, Integral a) => Prism' t a
- nonNull :: Prism' Value Value
- data Primitive
- = StringPrim !Text
- | NumberPrim !Scientific
- | BoolPrim !Bool
- | NullPrim
- class AsNumber t => AsPrimitive t where
- class AsPrimitive t => AsValue t where
- key :: AsValue t => Text -> Traversal' t Value
- members :: AsValue t => IndexedTraversal' Text t Value
- nth :: AsValue t => Int -> Traversal' t Value
- values :: AsValue t => IndexedTraversal' Int t Value
- class AsJSON t where
Numbers
_Number :: Prism' t ScientificSource
>>>
"[1, \"x\"]" ^? nth 0 . _Number
Just 1.0
>>>
"[1, \"x\"]" ^? nth 1 . _Number
Nothing
_Double :: Prism' t DoubleSource
Prism into an Double
over a Value
, Primitive
or Scientific
>>>
"[10.2]" ^? nth 0 . _Double
Just 10.2
_Integer :: Prism' t IntegerSource
Prism into an Integer
over a Value
, Primitive
or Scientific
>>>
"[10]" ^? nth 0 . _Integer
Just 10
>>>
"[10.5]" ^? nth 0 . _Integer
Just 10
>>>
"42" ^? _Integer
Just 42
_Integral :: (AsNumber t, Integral a) => Prism' t aSource
Access Integer Value
s as Integrals.
>>>
"[10]" ^? nth 0 . _Integral
Just 10
>>>
"[10.5]" ^? nth 0 . _Integral
Just 10
nonNull :: Prism' Value ValueSource
Prism into non-Null
values
>>>
"{\"a\": \"xyz\", \"b\": null}" ^? key "a" . nonNull
Just (String "xyz")
>>>
"{\"a\": {}, \"b\": null}" ^? key "a" . nonNull
Just (Object (fromList []))
>>>
"{\"a\": \"xyz\", \"b\": null}" ^? key "b" . nonNull
Nothing
Primitive
Primitives of Value
class AsNumber t => AsPrimitive t whereSource
_Primitive :: Prism' t PrimitiveSource
>>>
"[1, \"x\", null, true, false]" ^? nth 0 . _Primitive
Just (NumberPrim 1.0)
>>>
"[1, \"x\", null, true, false]" ^? nth 1 . _Primitive
Just (StringPrim "x")
>>>
"[1, \"x\", null, true, false]" ^? nth 2 . _Primitive
Just NullPrim
>>>
"[1, \"x\", null, true, false]" ^? nth 3 . _Primitive
Just (BoolPrim True)
>>>
"[1, \"x\", null, true, false]" ^? nth 4 . _Primitive
Just (BoolPrim False)
Objects and Arrays
class AsPrimitive t => AsValue t whereSource
_Value :: Prism' t ValueSource
>>>
"[1,2,3]" ^? _Value
Just (Array (fromList [Number 1.0,Number 2.0,Number 3.0]))
_Object :: Prism' t (HashMap Text Value)Source
>>>
"{\"a\": {}, \"b\": null}" ^? key "a" . _Object
Just (fromList [])
>>>
"{\"a\": {}, \"b\": null}" ^? key "b" . _Object
Nothing
>>>
_Object._Wrapped # [("key" :: Text, _String # "value")] :: String
"{\"key\":\"value\"}"
_Array :: Prism' t (Vector Value)Source
>>>
"[1,2,3]" ^? _Array
Just (fromList [Number 1.0,Number 2.0,Number 3.0])
nth :: AsValue t => Int -> Traversal' t ValueSource
Like ix
, but for Arrays with Int indexes
>>>
"[1,2,3]" ^? nth 1
Just (Number 2.0)
>>>
"\"a\": 100, \"b\": 200}" ^? nth 1
Nothing
>>>
"[1,2,3]" & nth 1 .~ Number 20
"[1,20,3]"
values :: AsValue t => IndexedTraversal' Int t ValueSource
An indexed Traversal into Array elements
>>>
"[1,2,3]" ^.. values
[Number 1.0,Number 2.0,Number 3.0]
>>>
"[1,2,3]" & values . _Number *~ 10
"[10,20,30]"