Skip to content

Commit 10879e4

Browse files
committed
Updating schema parser to more closely match current state of RFC
Related GraphQL-js commit: graphql/graphql-js@b0885a0
1 parent 8232865 commit 10879e4

File tree

2 files changed

+26
-24
lines changed

2 files changed

+26
-24
lines changed

graphql/language/parser.py

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -209,12 +209,8 @@ def parse_definition(parser):
209209
return parse_operation_definition(parser)
210210
elif name == 'fragment':
211211
return parse_fragment_definition(parser)
212-
elif name in ('type', 'interface', 'union', 'scalar', 'enum', 'input'):
213-
return parse_type_definition(parser)
214-
elif name == 'extend':
215-
return parse_type_extension_definition(parser)
216-
elif name == 'directive':
217-
return parse_directive_definition(parser)
212+
elif name in ('scalar', 'type', 'interface', 'union', 'enum', 'input', 'extend', 'directive'):
213+
return parse_type_system_definition(parser)
218214

219215
raise unexpected(parser)
220216

@@ -510,13 +506,16 @@ def parse_named_type(parser):
510506
)
511507

512508

513-
def parse_type_definition(parser):
509+
def parse_type_system_definition(parser):
514510
if not peek(parser, TokenKind.NAME):
515511
raise unexpected(parser)
516512

517513
name = parser.token.value
518514

519-
if name == 'type':
515+
if name == 'scalar':
516+
return parse_scalar_type_definition(parser)
517+
518+
elif name == 'type':
520519
return parse_object_type_definition(parser)
521520

522521
elif name == 'interface':
@@ -525,18 +524,31 @@ def parse_type_definition(parser):
525524
elif name == 'union':
526525
return parse_union_type_definition(parser)
527526

528-
elif name == 'scalar':
529-
return parse_scalar_type_definition(parser)
530-
531527
elif name == 'enum':
532528
return parse_enum_type_definition(parser)
533529

534530
elif name == 'input':
535531
return parse_input_object_type_definition(parser)
536532

533+
elif name == 'extend':
534+
return parse_type_extension_definition(parser)
535+
536+
elif name == 'directive':
537+
return parse_directive_definition(parser)
538+
537539
raise unexpected(parser)
538540

539541

542+
def parse_scalar_type_definition(parser):
543+
start = parser.token.start
544+
expect_keyword(parser, 'scalar')
545+
546+
return ast.ScalarTypeDefinition(
547+
name=parse_name(parser),
548+
loc=loc(parser, start)
549+
)
550+
551+
540552
def parse_object_type_definition(parser):
541553
start = parser.token.start
542554
expect_keyword(parser, 'type')
@@ -630,16 +642,6 @@ def parse_union_members(parser):
630642
return members
631643

632644

633-
def parse_scalar_type_definition(parser):
634-
start = parser.token.start
635-
expect_keyword(parser, 'scalar')
636-
637-
return ast.ScalarTypeDefinition(
638-
name=parse_name(parser),
639-
loc=loc(parser, start)
640-
)
641-
642-
643645
def parse_enum_type_definition(parser):
644646
start = parser.token.start
645647
expect_keyword(parser, 'enum')

graphql/language/printer.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,9 @@ def leave_NonNullType(self, node, *args):
111111

112112
# Type Definitions:
113113

114+
def leave_ScalarTypeDefinition(self, node, *args):
115+
return 'scalar ' + node.name
116+
114117
def leave_ObjectTypeDefinition(self, node, *args):
115118
return (
116119
'type ' + node.name + ' ' +
@@ -130,9 +133,6 @@ def leave_InterfaceTypeDefinition(self, node, *args):
130133
def leave_UnionTypeDefinition(self, node, *args):
131134
return 'union ' + node.name + ' = ' + join(node.types, ' | ')
132135

133-
def leave_ScalarTypeDefinition(self, node, *args):
134-
return 'scalar ' + node.name
135-
136136
def leave_EnumTypeDefinition(self, node, *args):
137137
return 'enum ' + node.name + ' ' + block(node.values)
138138

0 commit comments

Comments
 (0)