summaryrefslogtreecommitdiff
path: root/src/Language/GraphQL/AST/Parser.hs
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2020-01-11 08:32:25 +0100
committerEugen Wissner <belka@caraus.de>2020-01-13 08:21:02 +0100
commitadffa185bb249394ef651392b41b7a20b26031cc (patch)
tree40547a4ef3fa1804924144d73dbcf9630a451b23 /src/Language/GraphQL/AST/Parser.hs
parentf4ed06741dedb7b19cedc09b1c47afe1f0849f24 (diff)
downloadgraphql-adffa185bb249394ef651392b41b7a20b26031cc.tar.gz
Parse interface type definition
Diffstat (limited to 'src/Language/GraphQL/AST/Parser.hs')
-rw-r--r--src/Language/GraphQL/AST/Parser.hs10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/Language/GraphQL/AST/Parser.hs b/src/Language/GraphQL/AST/Parser.hs
index 274045d..41748b2 100644
--- a/src/Language/GraphQL/AST/Parser.hs
+++ b/src/Language/GraphQL/AST/Parser.hs
@@ -38,6 +38,7 @@ typeSystemDefinition = schemaDefinition
typeDefinition :: Parser TypeDefinition
typeDefinition = scalarTypeDefinition
<|> objectTypeDefinition
+ <|> interfaceTypeDefinition
<|> unionTypeDefinition
<?> "TypeDefinition"
@@ -83,6 +84,15 @@ unionMemberTypes sepBy' = UnionMemberTypes
<*> name `sepBy'` pipe
<?> "UnionMemberTypes"
+interfaceTypeDefinition :: Parser TypeDefinition
+interfaceTypeDefinition = InterfaceTypeDefinition
+ <$> description
+ <* symbol "interface"
+ <*> name
+ <*> opt directives
+ <*> braces (many fieldDefinition)
+ <?> "InterfaceTypeDefinition"
+
implementsInterfaces ::
Foldable t =>
(Parser Text -> Parser Text -> Parser (t NamedType)) ->