@@ -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