mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-04 18:41:51 +00:00
Merge pull request #994 from MihailRis/fix-xml.tostring
fix xml.tostring
This commit is contained in:
commit
00825f485c
3 changed files with 47 additions and 1 deletions
33
dev/tests/parsing.lua
Normal file
33
dev/tests/parsing.lua
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
local src = "<test><sub>test</sub></test>"
|
||||||
|
local parsed = xml.parse(src)
|
||||||
|
asserts.equals(src, xml.tostring(parsed, false))
|
||||||
|
|
||||||
|
local src = "{\"test\": \"test\", \"sub\": {\"test\": \"test\"}}"
|
||||||
|
local parsed = json.parse(src)
|
||||||
|
asserts.equals("test", parsed.test)
|
||||||
|
asserts.equals("test", parsed.sub.test)
|
||||||
|
|
||||||
|
-- toml
|
||||||
|
local src = [[
|
||||||
|
[section]
|
||||||
|
key = "value"
|
||||||
|
# comment
|
||||||
|
key2 = "other value"
|
||||||
|
number = 42
|
||||||
|
pi = 3.14159
|
||||||
|
enabled = true
|
||||||
|
items = ["a", "b", "c"]
|
||||||
|
table = { x = 1, y = 2 }
|
||||||
|
]]
|
||||||
|
local parsed = toml.parse(src)
|
||||||
|
|
||||||
|
asserts.equals("value", parsed.section.key)
|
||||||
|
asserts.equals("other value", parsed.section.key2)
|
||||||
|
asserts.equals(42, parsed.section.number)
|
||||||
|
asserts.equals(3.14159, parsed.section.pi)
|
||||||
|
asserts.equals(true, parsed.section.enabled)
|
||||||
|
asserts.equals("a", parsed.section.items[1])
|
||||||
|
asserts.equals("b", parsed.section.items[2])
|
||||||
|
asserts.equals("c", parsed.section.items[3])
|
||||||
|
asserts.equals(1, parsed.section.table.x)
|
||||||
|
asserts.equals(2, parsed.section.table.y)
|
||||||
|
|
@ -30,7 +30,7 @@ static int push_xml(lua::State* L, const xml::xmlelement& elem) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::unique_ptr<xml::xmlelement> toxml(lua::State* L) {
|
static std::unique_ptr<xml::xmlelement> toxml(lua::State* L) {
|
||||||
lua::getfield(L, TAG_ATTR);
|
lua::requirefield(L, TAG_ATTR);
|
||||||
auto tag = lua::require_lstring(L, -1);
|
auto tag = lua::require_lstring(L, -1);
|
||||||
lua::pop(L);
|
lua::pop(L);
|
||||||
|
|
||||||
|
|
@ -39,6 +39,13 @@ static std::unique_ptr<xml::xmlelement> toxml(lua::State* L) {
|
||||||
|
|
||||||
for (int i = 0; i < length; i++) {
|
for (int i = 0; i < length; i++) {
|
||||||
lua::rawgeti(L, i + 1);
|
lua::rawgeti(L, i + 1);
|
||||||
|
if (lua::isstring(L, -1)) {
|
||||||
|
auto textElement = std::make_unique<xml::xmlelement>("#");
|
||||||
|
textElement->set("#", std::string(lua::require_lstring(L, -1)));
|
||||||
|
elem->add(std::move(textElement));
|
||||||
|
lua::pop(L);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
elem->add(toxml(L));
|
elem->add(toxml(L));
|
||||||
lua::pop(L);
|
lua::pop(L);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,3 +22,9 @@ TEST(XML, VCM) {
|
||||||
throw err;
|
throw err;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(XML, TWO_WAYS) {
|
||||||
|
auto src = "<test><sub>test</sub></test>";
|
||||||
|
auto document = xml::parse("<test>", src);
|
||||||
|
ASSERT_EQ(src, xml::stringify(*document->getRoot(), false));
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue