@@ -84,6 +84,7 @@ type T a = a -> Value
85toJSON :: (Data a) => a -> Value
85toJSON :: (Data a) => a -> Value
86toJSON = toJSON_generic
86toJSON = toJSON_generic
87 `ext1Q` list
88 `ext1Q` list
88 `ext1Q` vector
89 `ext1Q` vector
89 `ext1Q` set
90 `ext1Q` set
@@ -119,6 +120,8 @@ toJSON = toJSON_generic
119 `extQ` (T.toJSON :: T ())
120 `extQ` (T.toJSON :: T ())
120 --`extQ` (T.toJSON :: T Ordering)
121 --`extQ` (T.toJSON :: T Ordering)
123+ maybe (Just a) = toJSON a
124+ maybe Nothing = Null
122 list xs = Array . V.fromList . map toJSON $ xs
125 list xs = Array . V.fromList . map toJSON $ xs
123 vector v = Array . V.map toJSON $ v
126 vector v = Array . V.map toJSON $ v
124 set s = Array . V.fromList . map toJSON . Set.toList $ s
127 set s = Array . V.fromList . map toJSON . Set.toList $ s
@@ -187,6 +190,7 @@ type F a = Parser a
188parseJSON :: (Data a) => Value -> Parser a
191parseJSON :: (Data a) => Value -> Parser a
189parseJSON j = parseJSON_generic j
192parseJSON j = parseJSON_generic j
190 `ext1R` list
194 `ext1R` list
191 `ext1R` vector
195 `ext1R` vector
192 `ext2R'` mapAny
196 `ext2R'` mapAny
@@ -222,6 +226,8 @@ parseJSON j = parseJSON_generic j
223 value :: (T.FromJSON a) => Parser a
227 value :: (T.FromJSON a) => Parser a
224 value = T.parseJSON j
228 value = T.parseJSON j
229+ maybeP :: (Data a) => Parser (Maybe a)
230+ maybeP = if j == Null then return Nothing else Just <$> parseJSON j
225 list :: (Data a) => Parser [a]
231 list :: (Data a) => Parser [a]
226 list = V.toList <$> parseJSON j
232 list = V.toList <$> parseJSON j
227 vector :: (Data a) => Parser (V.Vector a)
233 vector :: (Data a) => Parser (V.Vector a)