diff options
| author | Eugen Wissner <belka@caraus.de> | 2020-01-25 16:37:17 +0100 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2020-01-25 16:45:39 +0100 |
| commit | b4a3c9811447ab1c7704e9667ff0103771b7587c (patch) | |
| tree | 377262ed29cb8e966e24f6ec020d6ff266937cc6 /src/Language/GraphQL/AST/Parser.hs | |
| parent | cb5270b1974f80d34b0178a90198f96d96f57522 (diff) | |
| download | graphql-b4a3c9811447ab1c7704e9667ff0103771b7587c.tar.gz | |
Parse schema extensions
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 |
