diff options
Diffstat (limited to 'src/Language/GraphQL/AST/Parser.hs')
| -rw-r--r-- | src/Language/GraphQL/AST/Parser.hs | 18 |
1 files changed, 17 insertions, 1 deletions
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 |
