|
3 | 3 | import json |
4 | 4 |
|
5 | 5 |
|
6 | | -def to_json(value, **kwargs): |
| 6 | +def to_json(value, fn=None): |
7 | 7 | if isinstance(value, BaseNode): |
8 | | - return value.to_json(**kwargs) |
| 8 | + return value.to_json(fn) |
9 | 9 | if isinstance(value, list): |
10 | | - return list(to_json(item, **kwargs) for item in value) |
| 10 | + return list(to_json(item, fn) for item in value) |
11 | 11 | if isinstance(value, tuple): |
12 | | - return list(to_json(item, **kwargs) for item in value) |
| 12 | + return list(to_json(item, fn) for item in value) |
13 | 13 | else: |
14 | 14 | return value |
15 | 15 |
|
@@ -119,16 +119,15 @@ def equals(self, other, ignored_fields=['span']): |
119 | 119 |
|
120 | 120 | return True |
121 | 121 |
|
122 | | - def to_json(self, with_spans=True): |
| 122 | + def to_json(self, fn=None): |
123 | 123 | obj = { |
124 | | - name: to_json(value, with_spans=with_spans) |
| 124 | + name: to_json(value, fn) |
125 | 125 | for name, value in vars(self).items() |
126 | | - if with_spans or name != 'span' |
127 | 126 | } |
128 | 127 | obj.update( |
129 | 128 | {'type': self.__class__.__name__} |
130 | 129 | ) |
131 | | - return obj |
| 130 | + return fn(obj) if fn else obj |
132 | 131 |
|
133 | 132 | def __str__(self): |
134 | 133 | return json.dumps(self.to_json()) |
|
0 commit comments