|
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