toml: nested maps support
This commit is contained in:
+13
-6
@@ -137,16 +137,23 @@ void toml::parse(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string toml::stringify(dynamic::Map& root) {
|
std::string toml::stringify(dynamic::Map& root, const std::string& name) {
|
||||||
std::stringstream ss;
|
std::stringstream ss;
|
||||||
for (auto& sectionEntry : root.values) {
|
if (!name.empty()) {
|
||||||
ss << "[" << sectionEntry.first << "]\n";
|
ss << "[" << name << "]\n";
|
||||||
auto sectionMap = std::get_if<dynamic::Map_sptr>(§ionEntry.second);
|
}
|
||||||
for (auto& entry : (*sectionMap)->values) {
|
for (auto& entry : root.values) {
|
||||||
|
if (!std::holds_alternative<dynamic::Map_sptr>(entry.second)) {
|
||||||
ss << entry.first << " = ";
|
ss << entry.first << " = ";
|
||||||
ss << entry.second << "\n";
|
ss << entry.second << "\n";
|
||||||
}
|
}
|
||||||
ss << "\n";
|
}
|
||||||
|
for (auto& entry : root.values) {
|
||||||
|
if (auto submap = std::get_if<dynamic::Map_sptr>(&entry.second)) {
|
||||||
|
ss << "\n" << toml::stringify(
|
||||||
|
**submap, name.empty() ? entry.first : name+"."+entry.first
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return ss.str();
|
return ss.str();
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -10,7 +10,7 @@ class SettingsHandler;
|
|||||||
|
|
||||||
namespace toml {
|
namespace toml {
|
||||||
std::string stringify(SettingsHandler& handler);
|
std::string stringify(SettingsHandler& handler);
|
||||||
std::string stringify(dynamic::Map& root);
|
std::string stringify(dynamic::Map& root, const std::string& name="");
|
||||||
dynamic::Map_sptr parse(std::string_view file, std::string_view source);
|
dynamic::Map_sptr parse(std::string_view file, std::string_view source);
|
||||||
|
|
||||||
void parse(
|
void parse(
|
||||||
|
|||||||
Reference in New Issue
Block a user