summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Nolan <samnolan555@gmail.com>2019-11-27 19:18:20 +1100
committerSam Nolan <samnolan555@gmail.com>2019-11-28 19:09:26 +1100
commitdef52ddc202dc43f75ce5aebee3e448b263bde12 (patch)
treec56816a80183928c6815f8a7279f3799313ddf4e
parent34977849849cf72439ec6db61d641d70ee82dfb5 (diff)
downloadgraphql-def52ddc202dc43f75ce5aebee3e448b263bde12.tar.gz
Fix strings not consuming spaces
Fixes #28
-rw-r--r--CHANGELOG.md6
-rw-r--r--src/Language/GraphQL/AST/Lexer.hs4
-rw-r--r--tests/Language/GraphQL/AST/ParserSpec.hs12
3 files changed, 20 insertions, 2 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6420035..1b41dfc 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,12 @@
# Change Log
All notable changes to this project will be documented in this file.
+## Unreleased
+### Fixed
+- Parsing multiple string arguments, such as
+ `login(username: "username", password: "password")` would fail on the comma
+ due to strings not having a space consumer.
+
## [0.6.0.0] - 2019-11-27
### Changed
- `Language.GraphQL.Encoder` moved to `Language.GraphQL.AST.Encoder`.
diff --git a/src/Language/GraphQL/AST/Lexer.hs b/src/Language/GraphQL/AST/Lexer.hs
index e4d64ca..f95070c 100644
--- a/src/Language/GraphQL/AST/Lexer.hs
+++ b/src/Language/GraphQL/AST/Lexer.hs
@@ -134,7 +134,7 @@ braces = between (symbol "{") (symbol "}")
-- | Parser for strings.
string :: Parser T.Text
-string = between "\"" "\"" stringValue
+string = between "\"" "\"" stringValue <* spaceConsumer
where
stringValue = T.pack <$> many stringCharacter
stringCharacter = satisfy isStringCharacter1
@@ -143,7 +143,7 @@ string = between "\"" "\"" stringValue
-- | Parser for block strings.
blockString :: Parser T.Text
-blockString = between "\"\"\"" "\"\"\"" stringValue
+blockString = between "\"\"\"" "\"\"\"" stringValue <* spaceConsumer
where
stringValue = do
byLine <- sepBy (many blockStringCharacter) lineTerminator
diff --git a/tests/Language/GraphQL/AST/ParserSpec.hs b/tests/Language/GraphQL/AST/ParserSpec.hs
index 3e20e8f..420d3cf 100644
--- a/tests/Language/GraphQL/AST/ParserSpec.hs
+++ b/tests/Language/GraphQL/AST/ParserSpec.hs
@@ -30,3 +30,15 @@ spec = describe "Parser" $ do
mutation auth($username: String!, $password: String!){
test
}|]
+
+ it "accepts two string arguments" $
+ parse document "" `shouldSucceedOn` [r|
+ mutation auth{
+ test(username: "username", password: "password")
+ }|]
+
+ it "accepts two block string arguments" $
+ parse document "" `shouldSucceedOn` [r|
+ mutation auth{
+ test(username: """username""", password: """password""")
+ }|]