on master help sign in
Small cleanups.
10deeefBryan O'Sullivan
Data/Aeson/Parser.hs+11−14
@@ -21,24 +21,21 @@ import qualified Data.Attoparsec as A
21
21
22json :: Parser Value
22json :: Parser Value
23json = do
23json = do
24− skipSpace
25− c <- anyChar
24+ c <- skipSpace *> anyChar
26 case c of
25 case c of
27− '{' -> skipSpace *> object
26+ '{' -> skipSpace *> object_
28− '[' -> skipSpace *> array
27+ '[' -> skipSpace *> array_
29 _ -> fail "root value is not an object or array"
28 _ -> fail "root value is not an object or array"
30
29
31−object :: Parser Value
30+object_ :: Parser Value
32−object = do
31+object_ = do
33 let pair = liftA2 (,) (jstring <* skipSpace) (char8 ':' *> skipSpace *> value)
32 let pair = liftA2 (,) (jstring <* skipSpace) (char8 ':' *> skipSpace *> value)
34− vals <- (pair <* skipSpace) `sepBy` (char8 ',' *> skipSpace)
33+ vals <- ((pair <* skipSpace) `sepBy` (char8 ',' *> skipSpace)) <* char8 '}'
35− _ <- char8 '}'
36 return . Object $ Map.fromList vals
34 return . Object $ Map.fromList vals
37
35
38−array :: Parser Value
36+array_ :: Parser Value
39−array = do
37+array_ = do
40− vals <- (value <* skipSpace) `sepBy` (char8 ',' *> skipSpace)
38+ vals <- ((value <* skipSpace) `sepBy` (char8 ',' *> skipSpace)) <* char8 ']'
41− _ <- char8 ']'
42 return . Array $ Vector.fromList vals
39 return . Array $ Vector.fromList vals
43
40
44value :: Parser Value
41value :: Parser Value
@@ -47,8 +44,8 @@ value = most <|> (Number <$> double)
47 most = do
44 most = do
48 c <- anyChar
45 c <- anyChar
49 case c of
46 case c of
50− '{' -> skipSpace *> object
47+ '{' -> skipSpace *> object_
51− '[' -> skipSpace *> array
48+ '[' -> skipSpace *> array_
52 '"' -> String <$> jstring_
49 '"' -> String <$> jstring_
53 'f' -> string "alse" *> pure (Bool False)
50 'f' -> string "alse" *> pure (Bool False)
54 't' -> string "rue" *> pure (Bool True)
51 't' -> string "rue" *> pure (Bool True)