|
45 | 45 | :type 'integer
|
46 | 46 | :group 'json-reformat)
|
47 | 47 |
|
| 48 | +(defcustom json-reformat:pretty-string? nil |
| 49 | + "Whether to decode the string. |
| 50 | +
|
| 51 | +Example: |
| 52 | +
|
| 53 | +{\"name\":\"foobar\",\"nick\":\"foo \\u00e4 bar\",\"description\":\"<pre>\\nbaz\\n</pre>\"} |
| 54 | +
|
| 55 | +If nil: |
| 56 | +
|
| 57 | + { |
| 58 | + \"name\": \"foobar\", |
| 59 | + \"nick\": \"foo \\u00e4 bar\", |
| 60 | + \"description\": \"<pre>\\nbaz\\n<\\/pre>\" |
| 61 | + } |
| 62 | +
|
| 63 | +Else t: |
| 64 | +
|
| 65 | + { |
| 66 | + \"name\": \"foobar\", |
| 67 | + \"nick\": \"foo ä bar\", |
| 68 | + \"description\": \"<pre> |
| 69 | + baz |
| 70 | + </pre>\" |
| 71 | + }" |
| 72 | + :type 'boolean |
| 73 | + :group 'json-reformat) |
| 74 | + |
48 | 75 | (defun json-reformat:indent (level)
|
49 | 76 | (make-string (* level json-reformat:indent-width) ? ))
|
50 | 77 |
|
|
56 | 83 | ((equal json-false val) "false")
|
57 | 84 | (t (symbol-name val))))
|
58 | 85 |
|
59 |
| -(defun json-reformat:decode-string (val) |
60 |
| - (format "\"%s\"" val)) |
| 86 | +(defun json-reformat:string-to-string (val) |
| 87 | + (if json-reformat:pretty-string? |
| 88 | + (format "\"%s\"" (replace-regexp-in-string "\"" "\\\\\"" val)) |
| 89 | + (json-encode-string val))) |
61 | 90 |
|
62 | 91 | (defun json-reformat:vector-to-string (val level)
|
63 | 92 | (if (= (length val) 0) "[]"
|
|
84 | 113 | rval))
|
85 | 114 |
|
86 | 115 | (defun json-reformat:print-node (val level)
|
87 |
| - (cond ((consp val) (json-reformat:tree-to-string (json-reformat:reverse-plist val) level)) |
| 116 | + (cond ((consp val) (json-reformat:tree-to-string (json-reformat:reverse-plist val) level)) |
88 | 117 | ((numberp val) (json-reformat:number-to-string val))
|
89 | 118 | ((vectorp val) (json-reformat:vector-to-string val level))
|
90 |
| - ((null val) "null") |
| 119 | + ((null val) "null") |
91 | 120 | ((symbolp val) (json-reformat:symbol-to-string val))
|
92 |
| - (t (json-reformat:decode-string val)))) |
| 121 | + (t (json-reformat:string-to-string val)))) |
93 | 122 |
|
94 | 123 | (defun json-reformat:tree-to-string (root level)
|
95 | 124 | (concat "{\n"
|
|
0 commit comments