Spaces after commas (in [1, 2]) is controllable separately from multiline
This commit is contained in:
parent
e7b02c10dd
commit
860661987f
@ -35,12 +35,13 @@ struct fancy_serializer_style
|
|||||||
unsigned int strings_maximum_length = 0;
|
unsigned int strings_maximum_length = 0;
|
||||||
|
|
||||||
bool space_after_colon = false;
|
bool space_after_colon = false;
|
||||||
|
bool space_after_comma = false;
|
||||||
|
|
||||||
bool multiline = false;
|
bool multiline = false;
|
||||||
|
|
||||||
void set_old_multiline()
|
void set_old_multiline()
|
||||||
{
|
{
|
||||||
space_after_colon = multiline = true;
|
space_after_colon = space_after_comma = multiline = true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -298,6 +299,12 @@ class fancy_serializer
|
|||||||
}
|
}
|
||||||
const int newline_len = (active_style->multiline ? 1 : 0);
|
const int newline_len = (active_style->multiline ? 1 : 0);
|
||||||
|
|
||||||
|
using pair = std::pair<const char*, int>;
|
||||||
|
auto comma_string =
|
||||||
|
active_style->multiline ? pair(",\n", 2) :
|
||||||
|
active_style->space_after_comma ? pair(", ", 2) :
|
||||||
|
pair(",", 1);
|
||||||
|
|
||||||
o->write_characters("[\n", 1 + newline_len);
|
o->write_characters("[\n", 1 + newline_len);
|
||||||
|
|
||||||
// first n-1 elements
|
// first n-1 elements
|
||||||
@ -306,7 +313,7 @@ class fancy_serializer
|
|||||||
{
|
{
|
||||||
o->write_characters(indent_string.c_str(), new_indent);
|
o->write_characters(indent_string.c_str(), new_indent);
|
||||||
dump(*i, ensure_ascii, depth + 1, active_style);
|
dump(*i, ensure_ascii, depth + 1, active_style);
|
||||||
o->write_characters(",\n", 1 + newline_len);
|
o->write_characters(comma_string.first, comma_string.second);
|
||||||
}
|
}
|
||||||
|
|
||||||
// last element
|
// last element
|
||||||
|
|||||||
@ -10105,12 +10105,13 @@ struct fancy_serializer_style
|
|||||||
unsigned int strings_maximum_length = 0;
|
unsigned int strings_maximum_length = 0;
|
||||||
|
|
||||||
bool space_after_colon = false;
|
bool space_after_colon = false;
|
||||||
|
bool space_after_comma = false;
|
||||||
|
|
||||||
bool multiline = false;
|
bool multiline = false;
|
||||||
|
|
||||||
void set_old_multiline()
|
void set_old_multiline()
|
||||||
{
|
{
|
||||||
space_after_colon = multiline = true;
|
space_after_colon = space_after_comma = multiline = true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -10368,6 +10369,12 @@ class fancy_serializer
|
|||||||
}
|
}
|
||||||
const int newline_len = (active_style->multiline ? 1 : 0);
|
const int newline_len = (active_style->multiline ? 1 : 0);
|
||||||
|
|
||||||
|
using pair = std::pair<const char*, int>;
|
||||||
|
auto comma_string =
|
||||||
|
active_style->multiline ? pair(",\n", 2) :
|
||||||
|
active_style->space_after_comma ? pair(", ", 2) :
|
||||||
|
pair(",", 1);
|
||||||
|
|
||||||
o->write_characters("[\n", 1 + newline_len);
|
o->write_characters("[\n", 1 + newline_len);
|
||||||
|
|
||||||
// first n-1 elements
|
// first n-1 elements
|
||||||
@ -10376,7 +10383,7 @@ class fancy_serializer
|
|||||||
{
|
{
|
||||||
o->write_characters(indent_string.c_str(), new_indent);
|
o->write_characters(indent_string.c_str(), new_indent);
|
||||||
dump(*i, ensure_ascii, depth + 1, active_style);
|
dump(*i, ensure_ascii, depth + 1, active_style);
|
||||||
o->write_characters(",\n", 1 + newline_len);
|
o->write_characters(comma_string.first, comma_string.second);
|
||||||
}
|
}
|
||||||
|
|
||||||
// last element
|
// last element
|
||||||
|
|||||||
@ -280,6 +280,14 @@ TEST_CASE("serialization")
|
|||||||
|
|
||||||
SECTION("Spaces after commas are controllable separately from multiline")
|
SECTION("Spaces after commas are controllable separately from multiline")
|
||||||
{
|
{
|
||||||
|
SECTION("commas")
|
||||||
|
{
|
||||||
|
fancy_serializer_style style;
|
||||||
|
style.space_after_comma = true;
|
||||||
|
auto str = fancy_to_string({1, 2, 3}, style);
|
||||||
|
CHECK(str == "[1, 2, 3]");
|
||||||
|
}
|
||||||
|
|
||||||
SECTION("colons")
|
SECTION("colons")
|
||||||
{
|
{
|
||||||
fancy_serializer_style style;
|
fancy_serializer_style style;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user