summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Data/GraphQL/Parser.hs16
1 files changed, 10 insertions, 6 deletions
diff --git a/Data/GraphQL/Parser.hs b/Data/GraphQL/Parser.hs
index 9e3c562..1cd5cb6 100644
--- a/Data/GraphQL/Parser.hs
+++ b/Data/GraphQL/Parser.hs
@@ -149,12 +149,13 @@ typeCondition = namedType
-- This will try to pick the first type it can parse. If you are working with
-- explicit types use the `typedValue` parser.
value :: Parser Value
-value = -- TODO: Handle arbitrary precision.
- ValueInt <$> signed decimal
- <|> ValueFloat <$> signed double
+value = ValueVariable <$> variable
+ -- TODO: Handle arbitrary precision.
+ <|> ValueInt <$> tok (signed decimal)
+ <|> ValueFloat <$> tok (signed double)
<|> ValueBoolean <$> bool
-- TODO: Handle escape characters, unicode, etc
- <|> ValueString <$ "\"" <*> (pack <$> many anyChar) <* "\""
+ <|> ValueString <$> quotes name
-- `true` and `false` have been tried before
<|> ValueEnum <$> name
<|> ValueList <$> listValue
@@ -172,8 +173,8 @@ objectField :: Parser ObjectField
objectField = ObjectField <$> name <* tok ":" <*> value
bool :: Parser Bool
-bool = True <$ "true"
- <|> False <$ "false"
+bool = True <$ tok "true"
+ <|> False <$ tok "false"
-- * Directives
@@ -305,6 +306,9 @@ parens = between "(" ")"
braces :: Parser a -> Parser a
braces = between "{" "}"
+quotes :: Parser a -> Parser a
+quotes = between "\"" "\""
+
brackets :: Parser a -> Parser a
brackets = between "[" "]"