on master help sign in
Small cleanups.
commit10deeef42d152371c9a076c5c8f1c0c26a86e98d authorBryan O'Sullivan <bos@mailrank.com> dateFri 21 Jan 2011, 19:06 (16 years ago) parentc9b1306
1 file changed+11−14
Data/Aeson/Parser.hs+11−14
Data/Aeson/Parser.hs+11−14
@@ -21,24 +21,21 @@ import qualified Data.Attoparsec as A
2121
2222json :: Parser Value
2323json = do
24− skipSpace
25− c <- anyChar
24+ c <- skipSpace *> anyChar
2625 case c of
27− '{' -> skipSpace *> object
28− '[' -> skipSpace *> array
26+ '{' -> skipSpace *> object_
27+ '[' -> skipSpace *> array_
2928 _ -> fail "root value is not an object or array"
3029
31−object :: Parser Value
32−object = do
30+object_ :: Parser Value
31+object_ = do
3332 let pair = liftA2 (,) (jstring <* skipSpace) (char8 ':' *> skipSpace *> value)
34− vals <- (pair <* skipSpace) `sepBy` (char8 ',' *> skipSpace)
35− _ <- char8 '}'
33+ vals <- ((pair <* skipSpace) `sepBy` (char8 ',' *> skipSpace)) <* char8 '}'
3634 return . Object $ Map.fromList vals
3735
38−array :: Parser Value
39−array = do
40− vals <- (value <* skipSpace) `sepBy` (char8 ',' *> skipSpace)
41− _ <- char8 ']'
36+array_ :: Parser Value
37+array_ = do
38+ vals <- ((value <* skipSpace) `sepBy` (char8 ',' *> skipSpace)) <* char8 ']'
4239 return . Array $ Vector.fromList vals
4340
4441value :: Parser Value
@@ -47,8 +44,8 @@ value = most <|> (Number <$> double)
4744 most = do
4845 c <- anyChar
4946 case c of
50− '{' -> skipSpace *> object
51− '[' -> skipSpace *> array
47+ '{' -> skipSpace *> object_
48+ '[' -> skipSpace *> array_
5249 '"' -> String <$> jstring_
5350 'f' -> string "alse" *> pure (Bool False)
5451 't' -> string "rue" *> pure (Bool True)