Commit 422f3aa9f270f07d258b0b7e8d107303343f180e
1 parent
9b0c86d0
add escaping CR LF and TAB characters
allow to have simple quote in string add write_to_file function to save Json on disk
Showing
1 changed file
with
15 additions
and
4 deletions
Show diff stats
web/CXM_json.anubis
| ... | ... | @@ -100,10 +100,13 @@ define List(Word8) |
| 100 | 100 | { |
| 101 | 101 | [] then new_string, |
| 102 | 102 | [h . t] then |
| 103 | - if (h >=+ 32 & h +=< 33) | (h >=+ 35 & h +=< 38) | (h >=+ 40 & h +=< 91) | h >=+ 93 then // Allowed characters for JSON see RFC4627 + " ' " | |
| 103 | + if (h >=+ 32 & h +=< 33) | (h >=+ 35 & h +=< 91) | h >=+ 93 then // Allowed characters for JSON see RFC4627 + " ' " Why ' ??? | |
| 104 | 104 | _format_json_esc(t, [h . new_string]) |
| 105 | - else | |
| 106 | - _format_json_esc(t, [h, '\\' . new_string]) | |
| 105 | + else if h = '\n' then _format_json_esc(t, ['n', '\\' . new_string]) | |
| 106 | + else if h = '\r' then _format_json_esc(t, ['r', '\\' . new_string]) | |
| 107 | + else if h = '\t' then _format_json_esc(t, ['t', '\\' . new_string]) | |
| 108 | + else if h = 0x08 then _format_json_esc(t, ['b', '\\' . new_string]) //Backspace | |
| 109 | + else _format_json_esc(t, [h, '\\' . new_string]) | |
| 107 | 110 | }. |
| 108 | 111 | |
| 109 | 112 | public define String |
| ... | ... | @@ -166,4 +169,12 @@ public define Printable_tree |
| 166 | 169 | json_bool(b) then str_pt(if b then "true" else "false", []), |
| 167 | 170 | json_null then str_pt("null", []) |
| 168 | 171 | }. |
| 169 | - | |
| 172 | + | |
| 173 | +public define WriteFileResult | |
| 174 | + write_to_file | |
| 175 | + ( | |
| 176 | + String filename, //filename where the JSON will be dump | |
| 177 | + JsonValue json //JSON to dump | |
| 178 | + )= | |
| 179 | + write_to_file(filename, format_json(json)). | |
| 180 | + | ... | ... |