48 class KeyValuePrinter {
66 return "{\n" +
m_stream.str() +
"\n}\n";
71 template <
class T>
void put(
const std::string& key,
const T& value)
81 template <
class T>
void put(
const std::string& key,
const std::map<std::string, T>& value)
87 for (
char unused : key) {
102 std::string
escape(
const std::string& value)
const;
104 std::string
escape(
const char* value)
const {
return escape(std::string(value)); }
106 template <
class T> std::string
escape(
const T& value)
const {
return std::to_string(value); }
108 template <
class T> std::string
escape(
const std::vector<T>& value)
const
110 std::string delim =
"";
112 for (
auto el : value) {
120 template <
class T> std::string
escape(
const std::map<std::string, T>& value)
const
124 for (
auto pair : value)
125 printer.put(pair.first, pair.second);
126 return printer.string();