describe(rio.Yaml, { "should parse an array": function() { rio.Yaml.parse("- hello\n- world").shouldEqual(["hello", "world"]); }, "should lex an object": function() { var yaml = "jason:\n" + " age: 27\n" + " city: Chicago"; var tokens = rio.Yaml._tokenize(yaml); tokens[0].shouldEqual("jason:"); tokens[1].shouldEqual("\n"); tokens[2].shouldEqual(" age:"); tokens[3].shouldEqual("27"); tokens[4].shouldEqual("\n"); tokens[5].shouldEqual(" city:"); tokens[6].shouldEqual("Chicago"); }, "should parse an object": function() { var yaml = "jason:\n" + " age: 27\n" + " city: Chicago, IL"; var obj = rio.Yaml.parse(yaml); obj.jason.age.shouldEqual(27); obj.jason.city.shouldEqual("Chicago, IL"); }, "should parse an object with tabs for whitespace": function() { var yaml = "jason:\n" + "\tage: 27\n" + "\tcity: Chicago"; var obj = rio.Yaml.parse(yaml); obj.jason.age.shouldEqual(27); obj.jason.city.shouldEqual("Chicago"); }, "should parse an object with special characters in keys": function() { var yaml = "images/green-circle.png:\n" + " width: 27\n" + " height: 10"; var obj = rio.Yaml.parse(yaml); obj["images/green-circle.png"].width.shouldEqual(27); obj["images/green-circle.png"].height.shouldEqual(10); }, "should lex an object with an array": function() { var yaml = "users:\n" + " - Jason\n" + " - Vishu"; var tokens = rio.Yaml._tokenize(yaml); tokens[0].shouldEqual("users:"); tokens[1].shouldEqual("\n"); tokens[2].shouldEqual(" - Jason"); }, "should parse an object with an array": function() { var yaml = "users:\n" + " - Jason\n" + " - Vishu"; rio.Yaml.parse(yaml).users.shouldEqual(["Jason", "Vishu"]); }, "should parse an object with multiple arrays": function() { var yaml = "users:\n" + " - Jason\n" + " - Vishu\n" + "colors:\n" + " - Green\n" + " - Red"; var obj = rio.Yaml.parse(yaml); obj.users.shouldEqual(["Jason", "Vishu"]); obj.colors.shouldEqual(["Green", "Red"]); }, "should dump an array": function() { rio.Yaml.dump(["hello", "world"]).shouldEqual("- hello\n- world"); }, "should dump an object": function() { var yaml = "jason:\n" + " age: 27\n" + " city: Chicago"; var obj = { jason: { age: 27, city: "Chicago" } }; rio.Yaml.dump(obj).shouldEqual(yaml); }, "should dump an object with an array": function() { var yaml = "users:\n" + " - Jason\n" + " - Vishu"; var obj = { users: ["Jason", "Vishu"] }; rio.Yaml.dump(obj).shouldEqual(yaml); }, "should dump an object with multiple arrays": function() { var yaml = "users:\n" + " - Jason\n" + " - Vishu\n" + "colors:\n" + " - Green\n" + " - Red"; var obj = { users: ["Jason", "Vishu"], colors: ["Green", "Red"] }; rio.Yaml.dump(obj).shouldEqual(yaml); } });