| 164 | |
| 165 | |
| 166 | def field_path(path): |
| 167 | parts = [] |
| 168 | for element in path.elements: |
| 169 | if parts: |
| 170 | parts.append(".") |
| 171 | parts.append(element.field_name) |
| 172 | |
| 173 | if element.HasField('index'): |
| 174 | parts.append(f"[{element.index}]") |
| 175 | elif element.HasField('bool_key'): |
| 176 | parts.append("[true]" if element.bool_key else "[false]") |
| 177 | elif element.HasField('int_key'): |
| 178 | parts.append(f"[{element.int_key}]") |
| 179 | elif element.HasField('uint_key'): |
| 180 | parts.append(f"[{element.uint_key}]") |
| 181 | elif element.HasField('string_key'): |
| 182 | escaped_key = element.string_key.replace("\\", "\\\\").replace("\"", "\\\"") |
| 183 | parts.append(f'["{escaped_key}"]') |
| 184 | return "".join(parts) |