@@ -3,19 +3,19 @@ module Data.Argonaut.JCursor where
3
3
import Prelude
4
4
5
5
import Data.Argonaut.Core
6
- import Data.Argonaut.Encode
7
6
import Data.Argonaut.Decode
8
- import Data.Maybe (Maybe (..), fromMaybe , maybe )
9
- import Data.List (List (), zipWith , range , head , singleton , toList )
7
+ import Data.Argonaut.Encode
10
8
import Data.Either (Either (..))
9
+ import Data.Foldable (foldl )
10
+ import Data.List (List (), zipWith , range , head , singleton , toList )
11
+ import Data.Maybe (Maybe (..), fromMaybe , maybe )
11
12
import Data.Monoid (Monoid , mempty )
12
13
import Data.Tuple (Tuple (..), fst , snd )
13
- import Data.Foldable (foldl )
14
14
15
- import qualified Data.Int as I
16
15
import qualified Data.Array as A
17
- import qualified Data.StrMap as M
16
+ import qualified Data.Int as I
18
17
import qualified Data.Maybe.Unsafe as MU
18
+ import qualified Data.StrMap as M
19
19
20
20
data JCursor
21
21
= JCursorTop
@@ -58,7 +58,7 @@ insideOut (JIndex i c) = downIndex i (insideOut c)
58
58
downField :: String -> JCursor -> JCursor
59
59
downField i = downField' where
60
60
downField' JCursorTop = JField i JCursorTop
61
- downField' (JField i' c) = JField i' (downField' c)
61
+ downField' (JField i' c) = JField i' (downField' c)
62
62
downField' (JIndex i' c) = JIndex i' (downField' c)
63
63
64
64
downIndex :: Int -> JCursor -> JCursor
@@ -83,7 +83,7 @@ cursorSet :: JCursor -> Json -> Json -> Maybe Json
83
83
cursorSet JCursorTop v = pure <<< const v
84
84
cursorSet (JField i c) v = foldJsonObject defaultObj mergeObjs
85
85
where
86
- defaultObj :: Maybe Json
86
+ defaultObj :: Maybe Json
87
87
defaultObj = fromObject <<< M .singleton i <$> cursorSet c v (inferEmpty c)
88
88
89
89
mergeObjs :: JObject -> Maybe Json
@@ -94,7 +94,7 @@ cursorSet (JIndex i c) v = foldJsonArray defaultArr mergeArrs
94
94
where
95
95
defaultArr :: Maybe Json
96
96
defaultArr = fromArray <<< MU .fromJust <<<
97
- flip (A .updateAt i) (A .replicate (i + 1 ) jsonNull) <$>
97
+ flip (A .updateAt i) (A .replicate (i + 1 ) jsonNull) <$>
98
98
cursorSet c v (inferEmpty c)
99
99
100
100
mergeArrs :: JArray -> Maybe Json
@@ -108,14 +108,14 @@ cursorSet (JIndex i c) v = foldJsonArray defaultArr mergeArrs
108
108
else if i >= len
109
109
then setArr (xs <> (A .replicate (i - len + 1 ) jsonNull)) i v
110
110
else Just <<< fromArray <<< MU .fromJust $ A .updateAt i v xs
111
-
111
+
112
112
113
113
toPrims :: Json -> List (Tuple JCursor JsonPrim )
114
114
toPrims = foldJson nullFn boolFn numFn strFn arrFn objFn
115
115
where
116
116
mkTop :: JsonPrim -> List (Tuple JCursor JsonPrim )
117
117
mkTop p = singleton $ Tuple JCursorTop p
118
-
118
+
119
119
nullFn :: JNull -> List (Tuple JCursor JsonPrim )
120
120
nullFn _ = mkTop primNull
121
121
@@ -139,7 +139,7 @@ toPrims = foldJson nullFn boolFn numFn strFn arrFn objFn
139
139
arrFn' (Tuple i j) = toList ((\t -> Tuple (JIndex i (fst t)) (snd t))
140
140
<$> toPrims j)
141
141
142
-
142
+
143
143
objFn :: JObject -> List (Tuple JCursor JsonPrim )
144
144
objFn obj =
145
145
let f :: Tuple String Json -> List (Tuple JCursor JsonPrim )
@@ -197,7 +197,7 @@ instance encodeJsonJCursor :: EncodeJson JCursor where
197
197
loop (JIndex i c) = [encodeJson i] <> loop c
198
198
199
199
fail :: forall a b . (Show a ) => a -> Either String b
200
- fail x = Left $ " Expected String or Number but found: " ++ show x
200
+ fail x = Left $ " Expected String or Number but found: " ++ show x
201
201
202
202
instance decodeJsonJCursor :: DecodeJson JCursor where
203
203
decodeJson j = decodeJson j >>= loop
@@ -220,4 +220,4 @@ instance decodeJsonJCursor :: DecodeJson JCursor where
220
220
221
221
222
222
223
-
223
+
0 commit comments