1
Fork 0

Make vectors uglier ([]/~). Sorry. Should be temporary. Closes #2725.

This commit is contained in:
Michael Sullivan 2012-06-25 20:00:46 -07:00
parent c087aaf56b
commit 329eca6044
418 changed files with 4123 additions and 4034 deletions

View file

@ -30,7 +30,7 @@ enum json {
num(float),
string(@str),
boolean(bool),
list(@[json]),
list(@[json]/~),
dict(map::hashmap<str, json>),
null,
}
@ -383,7 +383,7 @@ impl parser for parser {
self.bump();
self.parse_whitespace();
let mut values = [];
let mut values = []/~;
if self.ch == ']' {
self.bump();
@ -585,7 +585,7 @@ impl of to_json for @str {
impl <A: to_json copy, B: to_json copy> of to_json for (A, B) {
fn to_json() -> json {
let (a, b) = self;
list(@[a.to_json(), b.to_json()])
list(@[a.to_json(), b.to_json()]/~)
}
}
@ -593,11 +593,11 @@ impl <A: to_json copy, B: to_json copy, C: to_json copy>
of to_json for (A, B, C) {
fn to_json() -> json {
let (a, b, c) = self;
list(@[a.to_json(), b.to_json(), c.to_json()])
list(@[a.to_json(), b.to_json(), c.to_json()]/~)
}
}
impl <A: to_json> of to_json for [A] {
impl <A: to_json> of to_json for [A]/~ {
fn to_json() -> json { list(@self.map { |elt| elt.to_json() }) }
}
@ -632,7 +632,7 @@ impl of to_str::to_str for error {
#[cfg(test)]
mod tests {
fn mk_dict(items: [(str, json)]) -> json {
fn mk_dict(items: [(str, json)]/~) -> json {
let d = map::str_hash();
vec::iter(items) { |item|
@ -670,26 +670,26 @@ mod tests {
#[test]
fn test_write_list() {
assert to_str(list(@[])) == "[]";
assert to_str(list(@[boolean(true)])) == "[true]";
assert to_str(list(@[]/~)) == "[]";
assert to_str(list(@[boolean(true)]/~)) == "[true]";
assert to_str(list(@[
boolean(false),
null,
list(@[string(@"foo\nbar"), num(3.5f)])
])) == "[false, null, [\"foo\\nbar\", 3.5]]";
list(@[string(@"foo\nbar"), num(3.5f)]/~)
]/~)) == "[false, null, [\"foo\\nbar\", 3.5]]";
}
#[test]
fn test_write_dict() {
assert to_str(mk_dict([])) == "{}";
assert to_str(mk_dict([("a", boolean(true))])) == "{ \"a\": true }";
assert to_str(mk_dict([]/~)) == "{}";
assert to_str(mk_dict([("a", boolean(true))]/~)) == "{ \"a\": true }";
assert to_str(mk_dict([
("a", boolean(true)),
("b", list(@[
mk_dict([("c", string(@"\x0c\r"))]),
mk_dict([("d", string(@""))])
]))
])) ==
mk_dict([("c", string(@"\x0c\r"))]/~),
mk_dict([("d", string(@""))]/~)
]/~))
]/~)) ==
"{ " +
"\"a\": true, " +
"\"b\": [" +
@ -709,7 +709,7 @@ mod tests {
err({line: 1u, col: 6u, msg: @"trailing characters"});
assert from_str("1a") ==
err({line: 1u, col: 2u, msg: @"trailing characters"});
assert from_str("[]a") ==
assert from_str("[]/~a") ==
err({line: 1u, col: 3u, msg: @"trailing characters"});
assert from_str("{}a") ==
err({line: 1u, col: 3u, msg: @"trailing characters"});
@ -798,15 +798,15 @@ mod tests {
assert from_str("[6 7]") ==
err({line: 1u, col: 4u, msg: @"expecting ',' or ']'"});
assert from_str("[]") == ok(list(@[]));
assert from_str("[ ]") == ok(list(@[]));
assert from_str("[true]") == ok(list(@[boolean(true)]));
assert from_str("[ false ]") == ok(list(@[boolean(false)]));
assert from_str("[null]") == ok(list(@[null]));
assert from_str("[3, 1]") == ok(list(@[num(3f), num(1f)]));
assert from_str("\n[3, 2]\n") == ok(list(@[num(3f), num(2f)]));
assert from_str("[]") == ok(list(@[]/~));
assert from_str("[ ]") == ok(list(@[]/~));
assert from_str("[true]") == ok(list(@[boolean(true)]/~));
assert from_str("[ false ]") == ok(list(@[boolean(false)]/~));
assert from_str("[null]") == ok(list(@[null]/~));
assert from_str("[3, 1]") == ok(list(@[num(3f), num(1f)]/~));
assert from_str("\n[3, 2]\n") == ok(list(@[num(3f), num(2f)]/~));
assert from_str("[2, [4, 1]]") ==
ok(list(@[num(2f), list(@[num(4f), num(1f)])]));
ok(list(@[num(2f), list(@[num(4f), num(1f)]/~)]/~));
}
#[test]
@ -835,23 +835,23 @@ mod tests {
assert from_str("{\"a\":1,") ==
err({line: 1u, col: 8u, msg: @"EOF while parsing object"});
assert eq(result::get(from_str("{}")), mk_dict([]));
assert eq(result::get(from_str("{}")), mk_dict([]/~));
assert eq(result::get(from_str("{\"a\": 3}")),
mk_dict([("a", num(3.0f))]));
mk_dict([("a", num(3.0f))]/~));
assert eq(result::get(from_str("{ \"a\": null, \"b\" : true }")),
mk_dict([
("a", null),
("b", boolean(true))]));
("b", boolean(true))]/~));
assert eq(result::get(from_str("\n{ \"a\": null, \"b\" : true }\n")),
mk_dict([
("a", null),
("b", boolean(true))]));
("b", boolean(true))]/~));
assert eq(result::get(from_str("{\"a\" : 1.0 ,\"b\": [ true ]}")),
mk_dict([
("a", num(1.0)),
("b", list(@[boolean(true)]))
]));
("b", list(@[boolean(true)]/~))
]/~));
assert eq(result::get(from_str(
"{" +
"\"a\": 1.0, " +
@ -867,10 +867,10 @@ mod tests {
boolean(true),
string(@"foo\nbar"),
mk_dict([
("c", mk_dict([("d", null)]))
])
]))
]));
("c", mk_dict([("d", null)]/~))
]/~)
]/~))
]/~));
}
#[test]