| 8 | |
| 9 | |
| 10 | def tojavascript(obj: Union[str, JsCode, dict, list, Element]) -> str: |
| 11 | if isinstance(obj, JsCode): |
| 12 | return obj.js_code |
| 13 | elif isinstance(obj, Element): |
| 14 | return obj.get_name() |
| 15 | elif isinstance(obj, dict): |
| 16 | out = ["{\n"] |
| 17 | for key, value in obj.items(): |
| 18 | if isinstance(key, str): |
| 19 | out.append(f' "{camelize(key)}": ') |
| 20 | else: |
| 21 | out.append(f" {key}: ") |
| 22 | out.append(tojavascript(value)) |
| 23 | out.append(",\n") |
| 24 | out.append("}") |
| 25 | return "".join(out) |
| 26 | elif isinstance(obj, list): |
| 27 | out = ["[\n"] |
| 28 | for value in obj: |
| 29 | out.append(tojavascript(value)) |
| 30 | out.append(",\n") |
| 31 | out.append("]") |
| 32 | return "".join(out) |
| 33 | else: |
| 34 | return _to_escaped_json(obj) |
| 35 | |
| 36 | |
| 37 | def _to_escaped_json(obj: TypeJsonValue) -> str: |