Skip to content

Commit b84120c

Browse files
killerswanerickt
authored andcommitted
---
yaml --- r: 30218 b: refs/heads/incoming c: cf38618 h: refs/heads/master v: v3
1 parent d9d0573 commit b84120c

File tree

2 files changed

+32
-10
lines changed

2 files changed

+32
-10
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ refs/heads/try: d324a424d8f84b1eb049b12cf34182bda91b0024
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
88
refs/heads/try2: d0c6ce338884ee21843f4b40bf6bf18d222ce5df
9-
refs/heads/incoming: 4fb675be2f42a828fb5a6570b9aad2c65f4598b9
9+
refs/heads/incoming: cf386188c88c39902d4ef7f9a6be20379e288f5f
1010
refs/heads/dist-snap: 2f32a1581f522e524009138b33b1c7049ced668d
1111
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1212
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503

branches/incoming/src/libstd/json.rs

Lines changed: 31 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -102,14 +102,20 @@ fn to_writer_pretty(wr: io::Writer, j: Json, indent: uint) {
102102
String(s) => wr.write_str(escape_str(*s)),
103103
Boolean(b) => wr.write_str(if b { ~"true" } else { ~"false" }),
104104
List(vv) => {
105+
if vv.len() == 0u {
106+
wr.write_str(~"[]");
107+
return;
108+
}
109+
110+
let inner_indent = indent + 2;
111+
105112
// [
106-
wr.write_str(spaces(indent));
107-
wr.write_str("[ ");
113+
wr.write_str("[\n");
114+
wr.write_str(spaces(inner_indent));
108115

109116
// [ elem,
110117
// elem,
111118
// elem ]
112-
let inner_indent = indent + 2;
113119
let mut first = true;
114120
for (*vv).each |item| {
115121
if !first {
@@ -121,9 +127,18 @@ fn to_writer_pretty(wr: io::Writer, j: Json, indent: uint) {
121127
};
122128

123129
// ]
124-
wr.write_str(~" ]");
130+
wr.write_str("\n");
131+
wr.write_str(spaces(indent));
132+
wr.write_str(~"]");
125133
}
126134
Dict(dd) => {
135+
if dd.size() == 0u {
136+
wr.write_str(~"{}");
137+
return;
138+
}
139+
140+
let inner_indent = indent + 2;
141+
127142
// convert from a dictionary
128143
let mut pairs = ~[];
129144
for dd.each |key, value| {
@@ -134,13 +149,12 @@ fn to_writer_pretty(wr: io::Writer, j: Json, indent: uint) {
134149
let sorted_pairs = sort::merge_sort(|a,b| *a <= *b, pairs);
135150

136151
// {
137-
wr.write_str(spaces(indent));
138-
wr.write_str(~"{ ");
152+
wr.write_str(~"{\n");
153+
wr.write_str(spaces(inner_indent));
139154

140155
// { k: v,
141156
// k: v,
142157
// k: v }
143-
let inner_indent = indent + 2;
144158
let mut first = true;
145159
for sorted_pairs.each |kv| {
146160
let (key, value) = kv;
@@ -150,13 +164,15 @@ fn to_writer_pretty(wr: io::Writer, j: Json, indent: uint) {
150164
}
151165
first = false;
152166
let key = str::append(escape_str(key), ~": ");
153-
let key_indent = str::len(key);
167+
let key_indent = inner_indent + str::len(key);
154168
wr.write_str(key);
155169
to_writer_pretty(wr, value, key_indent);
156170
};
157171
158172
// }
159-
wr.write_str(~" }");
173+
wr.write_str(~"\n");
174+
wr.write_str(spaces(indent));
175+
wr.write_str(~"}");
160176
}
161177
Null => wr.write_str(~"null")
162178
}
@@ -892,6 +908,12 @@ mod tests {
892908
assert from_str(~" \"foo\" ") == Ok(String(@~"foo"));
893909
}
894910

911+
#[test]
912+
fn test_unicode_hex_escapes_in_str() {
913+
assert from_str(~"\"\\u12ab\"") == Ok(String(@~"\u12ab"));
914+
assert from_str(~"\"\\uAB12\"") == Ok(String(@~"\uAB12"));
915+
}
916+
895917
#[test]
896918
fn test_read_list() {
897919
assert from_str(~"[") ==

0 commit comments

Comments
 (0)