Skip to content

Commit 4a74612

Browse files
committed
Added ensure_ascii + style=<pretty|compact|minified> args to data.json.write()
1 parent 806eb08 commit 4a74612

2 files changed

Lines changed: 28 additions & 4 deletions

File tree

  • remove-json-keys/src/remove_json_keys/lib/data
  • translate-messages/src/translate_messages/lib/data

remove-json-keys/src/remove_json_keys/lib/data/json.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,19 @@ def remove_keys(json_path, keys):
2727
files_processed_cnt += 1
2828
return keys_removed, keys_skipped, files_processed_cnt
2929

30-
def write(file_path, data, encoding='utf-8'):
30+
def write(file_path, data, encoding='utf-8', ensure_ascii=False, style='pretty'):
3131
Path(file_path).parent.mkdir(parents=True, exist_ok=True)
3232
with open(file_path, 'w', encoding=encoding) as file:
33-
json.dump(data, file, indent=2, ensure_ascii=False)
33+
if style == 'pretty': # single key/val spans multi-lines
34+
json.dump(data, file, indent=2, ensure_ascii=ensure_ascii)
35+
elif style == 'compact': # single key/val per line
36+
file.write('{\n')
37+
items = list(data.items())
38+
for i, (key, val) in enumerate(items):
39+
line_end = ',' if i < len(items) - 1 else ''
40+
inner = json.dumps(val, ensure_ascii=ensure_ascii)
41+
inner = '{ ' + inner[1:-1] + ' }' # pad braces
42+
file.write(f' "{key}": {inner}{line_end}\n')
43+
file.write('}\n')
44+
else: # minified to single line
45+
json.dump(data, file, separators=(',', ':'), ensure_ascii=ensure_ascii)

translate-messages/src/translate_messages/lib/data/json.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,19 @@ def read(file_path, encoding='utf-8'):
77
with open(file_path, 'r', encoding=encoding) as file:
88
return json5.load(file)
99

10-
def write(file_path, data, encoding='utf-8'):
10+
def write(file_path, data, encoding='utf-8', ensure_ascii=False, style='pretty'):
1111
Path(file_path).parent.mkdir(parents=True, exist_ok=True)
1212
with open(file_path, 'w', encoding=encoding) as file:
13-
json.dump(data, file, indent=2, ensure_ascii=False)
13+
if style == 'pretty': # single key/val spans multi-lines
14+
json.dump(data, file, indent=2, ensure_ascii=ensure_ascii)
15+
elif style == 'compact': # single key/val per line
16+
file.write('{\n')
17+
items = list(data.items())
18+
for i, (key, val) in enumerate(items):
19+
line_end = ',' if i < len(items) - 1 else ''
20+
inner = json.dumps(val, ensure_ascii=ensure_ascii)
21+
inner = '{ ' + inner[1:-1] + ' }' # pad braces
22+
file.write(f' "{key}": {inner}{line_end}\n')
23+
file.write('}\n')
24+
else: # minified to single line
25+
json.dump(data, file, separators=(',', ':'), ensure_ascii=ensure_ascii)

0 commit comments

Comments
 (0)