|
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
|
@@ -82,7 +83,7 @@ def leave_OperationDefinition(self, node, *args):
|
82 | 83 |
|
83 | 84 | def leave_VariableDefinition(self, node, *args):
|
84 | 85 | # type: (Any, *Any) -> str
|
85 |
| - return node.variable + ": " + node.type + wrap(" = ", node.default_value) |
| 86 | + return node.variable + ": " + node.type + wrap(" = ", node.default_value, is_default_value=True) |
86 | 87 |
|
87 | 88 | def leave_SelectionSet(self, node, *args):
|
88 | 89 | # type: (Any, *Any) -> str
|
@@ -148,6 +149,12 @@ def leave_BooleanValue(self, node, *args):
|
148 | 149 | # type: (Any, *Any) -> str
|
149 | 150 | return json.dumps(node.value)
|
150 | 151 |
|
| 152 | + def leave_NullValue(self, node, *args): |
| 153 | + return "null" |
| 154 | + |
| 155 | + def leave_UndefinedValue(self, node, *args): |
| 156 | + return Undefined |
| 157 | + |
151 | 158 | def leave_EnumValue(self, node, *args):
|
152 | 159 | # type: (Any, *Any) -> str
|
153 | 160 | return node.value
|
@@ -229,7 +236,7 @@ def leave_InputValueDefinition(self, node, *args):
|
229 | 236 | node.name
|
230 | 237 | + ": "
|
231 | 238 | + node.type
|
232 |
| - + wrap(" = ", node.default_value) |
| 239 | + + wrap(" = ", node.default_value, is_default_value=True) |
233 | 240 | + wrap(" ", join(node.directives, " "))
|
234 | 241 | )
|
235 | 242 |
|
@@ -269,13 +276,14 @@ def leave_EnumValueDefinition(self, node, *args):
|
269 | 276 |
|
270 | 277 | def leave_InputObjectTypeDefinition(self, node, *args):
|
271 | 278 | # type: (Any, *Any) -> str
|
272 |
| - return ( |
| 279 | + s = ( |
273 | 280 | "input "
|
274 | 281 | + node.name
|
275 | 282 | + wrap(" ", join(node.directives, " "))
|
276 | 283 | + " "
|
277 | 284 | + block(node.fields)
|
278 | 285 | )
|
| 286 | + return s |
279 | 287 |
|
280 | 288 | def leave_TypeExtensionDefinition(self, node, *args):
|
281 | 289 | # type: (Any, *Any) -> str
|
@@ -305,8 +313,14 @@ def block(_list):
|
305 | 313 | return "{}"
|
306 | 314 |
|
307 | 315 |
|
308 |
| -def wrap(start, maybe_str, end=""): |
309 |
| - # type: (str, Optional[str], str) -> str |
| 316 | +def wrap(start, maybe_str, end="", is_default_value=False): |
| 317 | + # type: (str, Optional[str], str, bool) -> str |
| 318 | + if is_default_value: |
| 319 | + if maybe_str is Undefined: |
| 320 | + return "" |
| 321 | + s = "null" if maybe_str is None else maybe_str |
| 322 | + return start + s + end |
| 323 | + |
310 | 324 | if maybe_str:
|
311 | 325 | return start + maybe_str + end
|
312 | 326 | return ""
|
|
0 commit comments