|
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