Merge branch 'main' into devtools

This commit is contained in:
MihailRis 2024-05-09 22:02:33 +03:00
commit 0836457c17
4 changed files with 40 additions and 3 deletions

View File

@ -52,7 +52,7 @@ void stringifyObj(
bool nice
);
void stringify(
void stringifyValue(
const Value& value,
std::stringstream& ss,
int indent,
@ -74,7 +74,7 @@ void stringify(
if (i > 0 || nice) {
newline(ss, nice, indent, indentstr);
}
stringify(value, ss, indent+1, indentstr, nice);
stringifyValue(value, ss, indent+1, indentstr, nice);
if (i + 1 < list->size()) {
ss << ',';
}
@ -114,7 +114,7 @@ void stringifyObj(
}
const Value& value = entry.second;
ss << util::escape(key) << ": ";
stringify(value, ss, indent+1, indentstr, nice);
stringifyValue(value, ss, indent+1, indentstr, nice);
index++;
if (index < obj->values.size()) {
ss << ',';
@ -136,6 +136,16 @@ std::string json::stringify(
return ss.str();
}
std::string json::stringify(
const dynamic::Value& value,
bool nice,
const std::string& indent
) {
std::stringstream ss;
stringifyValue(value, ss, 1, indent, nice);
return ss.str();
}
Parser::Parser(std::string_view filename, std::string_view source)
: BasicParser(filename, source) {
}

View File

@ -22,6 +22,12 @@ namespace json {
bool nice,
const std::string& indent
);
std::string stringify(
const dynamic::Value& value,
bool nice,
const std::string& indent
);
}
#endif // CODERS_JSON_HPP_

View File

@ -1,7 +1,24 @@
#include "dynamic.hpp"
#include "../coders/json.hpp"
using namespace dynamic;
std::ostream& operator<<(std::ostream& stream, const dynamic::Value& value) {
stream << json::stringify(value, false, " ");
return stream;
}
std::ostream& operator<<(std::ostream& stream, const dynamic::Map_sptr& value) {
stream << json::stringify(value, false, " ");
return stream;
}
std::ostream& operator<<(std::ostream& stream, const dynamic::List_sptr& value) {
stream << json::stringify(value, false, " ");
return stream;
}
std::string List::str(size_t index) const {
const auto& value = values[index];
switch (static_cast<Type>(value.index())) {

View File

@ -137,4 +137,8 @@ namespace dynamic {
};
}
std::ostream& operator<<(std::ostream& stream, const dynamic::Value& value);
std::ostream& operator<<(std::ostream& stream, const dynamic::Map_sptr& value);
std::ostream& operator<<(std::ostream& stream, const dynamic::List_sptr& value);
#endif // DATA_DYNAMIC_HPP_