|
1 | 1 | import json
|
2 | 2 |
|
3 | 3 | from .visitor import Visitor, visit
|
| 4 | +from ..utils.undefined import Undefined |
4 | 5 |
|
5 | 6 | # Necessary for static type checking
|
6 | 7 | if False: # flake8: noqa
|
@@ -45,7 +46,7 @@ def leave_OperationDefinition(self, node, *args):
|
45 | 46 |
|
46 | 47 | def leave_VariableDefinition(self, node, *args):
|
47 | 48 | # type: (Any, *Any) -> str
|
48 |
| - return node.variable + ": " + node.type + wrap(" = ", node.default_value) |
| 49 | + return node.variable + ": " + node.type + wrap(" = ", node.default_value, is_default_value=True) |
49 | 50 |
|
50 | 51 | def leave_SelectionSet(self, node, *args):
|
51 | 52 | # type: (Any, *Any) -> str
|
@@ -111,6 +112,12 @@ def leave_BooleanValue(self, node, *args):
|
111 | 112 | # type: (Any, *Any) -> str
|
112 | 113 | return json.dumps(node.value)
|
113 | 114 |
|
| 115 | + def leave_NullValue(self, node, *args): |
| 116 | + return "null" |
| 117 | + |
| 118 | + def leave_UndefinedValue(self, node, *args): |
| 119 | + return Undefined |
| 120 | + |
114 | 121 | def leave_EnumValue(self, node, *args):
|
115 | 122 | # type: (Any, *Any) -> str
|
116 | 123 | return node.value
|
@@ -192,7 +199,7 @@ def leave_InputValueDefinition(self, node, *args):
|
192 | 199 | node.name
|
193 | 200 | + ": "
|
194 | 201 | + node.type
|
195 |
| - + wrap(" = ", node.default_value) |
| 202 | + + wrap(" = ", node.default_value, is_default_value=True) |
196 | 203 | + wrap(" ", join(node.directives, " "))
|
197 | 204 | )
|
198 | 205 |
|
@@ -232,13 +239,14 @@ def leave_EnumValueDefinition(self, node, *args):
|
232 | 239 |
|
233 | 240 | def leave_InputObjectTypeDefinition(self, node, *args):
|
234 | 241 | # type: (Any, *Any) -> str
|
235 |
| - return ( |
| 242 | + s = ( |
236 | 243 | "input "
|
237 | 244 | + node.name
|
238 | 245 | + wrap(" ", join(node.directives, " "))
|
239 | 246 | + " "
|
240 | 247 | + block(node.fields)
|
241 | 248 | )
|
| 249 | + return s |
242 | 250 |
|
243 | 251 | def leave_TypeExtensionDefinition(self, node, *args):
|
244 | 252 | # type: (Any, *Any) -> str
|
@@ -268,8 +276,14 @@ def block(_list):
|
268 | 276 | return "{}"
|
269 | 277 |
|
270 | 278 |
|
271 |
| -def wrap(start, maybe_str, end=""): |
272 |
| - # type: (str, Optional[str], str) -> str |
| 279 | +def wrap(start, maybe_str, end="", is_default_value=False): |
| 280 | + # type: (str, Optional[str], str, bool) -> str |
| 281 | + if is_default_value: |
| 282 | + if maybe_str is Undefined: |
| 283 | + return "" |
| 284 | + s = "null" if maybe_str is None else maybe_str |
| 285 | + return start + s + end |
| 286 | + |
273 | 287 | if maybe_str:
|
274 | 288 | return start + maybe_str + end
|
275 | 289 | return ""
|
|
0 commit comments