From b4a3c9811447ab1c7704e9667ff0103771b7587c Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Sat, 25 Jan 2020 16:37:17 +0100 Subject: Parse schema extensions --- src/Language/GraphQL/AST/Parser.hs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'src/Language/GraphQL/AST/Parser.hs') diff --git a/src/Language/GraphQL/AST/Parser.hs b/src/Language/GraphQL/AST/Parser.hs index 33deb15..a750651 100644 --- a/src/Language/GraphQL/AST/Parser.hs +++ b/src/Language/GraphQL/AST/Parser.hs @@ -30,6 +30,7 @@ document = unicodeBOM definition :: Parser Definition definition = ExecutableDefinition <$> executableDefinition <|> TypeSystemDefinition <$> typeSystemDefinition + <|> TypeSystemExtension <$> typeSystemExtension "Definition" executableDefinition :: Parser ExecutableDefinition @@ -43,6 +44,10 @@ typeSystemDefinition = schemaDefinition <|> directiveDefinition "TypeSystemDefinition" +typeSystemExtension :: Parser TypeSystemExtension +typeSystemExtension = SchemaExtension <$> schemaExtension + "TypeSystemExtension" + directiveDefinition :: Parser TypeSystemDefinition directiveDefinition = DirectiveDefinition <$> description @@ -214,8 +219,19 @@ schemaDefinition = SchemaDefinition <*> directives <*> operationTypeDefinitions "SchemaDefinition" + +operationTypeDefinitions :: Parser (NonEmpty OperationTypeDefinition) +operationTypeDefinitions = braces $ NonEmpty.some operationTypeDefinition + +schemaExtension :: Parser SchemaExtension +schemaExtension = extend "schema" + >> try schemaOperationExtension + <|> SchemaDirectiveExtension <$> NonEmpty.some directive + "SchemaExtension" where - operationTypeDefinitions = braces $ NonEmpty.some operationTypeDefinition + schemaOperationExtension = SchemaOperationExtension + <$> directives + <*> operationTypeDefinitions operationTypeDefinition :: Parser OperationTypeDefinition operationTypeDefinition = OperationTypeDefinition -- cgit v1.2.3