use range_put_all
parent
5c2c441925
commit
7294580ccf
|
@ -583,23 +583,24 @@ private:
|
||||||
namespace util {
|
namespace util {
|
||||||
template<typename R>
|
template<typename R>
|
||||||
inline R &&escape_string(R &&writer, ostd::string_range str) {
|
inline R &&escape_string(R &&writer, ostd::string_range str) {
|
||||||
|
using namespace ostd::string_literals;
|
||||||
writer.put('"');
|
writer.put('"');
|
||||||
for (; !str.empty(); str.pop_front()) {
|
for (; !str.empty(); str.pop_front()) {
|
||||||
switch (str.front()) {
|
switch (str.front()) {
|
||||||
case '\n':
|
case '\n':
|
||||||
writer = ostd::copy(ostd::string_range{"^n"}, writer);
|
ostd::range_put_all(writer, "^n"_sr);
|
||||||
break;
|
break;
|
||||||
case '\t':
|
case '\t':
|
||||||
writer = ostd::copy(ostd::string_range{"^t"}, writer);
|
ostd::range_put_all(writer, "^t"_sr);
|
||||||
break;
|
break;
|
||||||
case '\f':
|
case '\f':
|
||||||
writer = ostd::copy(ostd::string_range{"^f"}, writer);
|
ostd::range_put_all(writer, "^f"_sr);
|
||||||
break;
|
break;
|
||||||
case '"':
|
case '"':
|
||||||
writer = ostd::copy(ostd::string_range{"^\""}, writer);
|
ostd::range_put_all(writer, "^\""_sr);
|
||||||
break;
|
break;
|
||||||
case '^':
|
case '^':
|
||||||
writer = ostd::copy(ostd::string_range{"^^"}, writer);
|
ostd::range_put_all(writer, "^^"_sr);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
writer.put(str.front());
|
writer.put(str.front());
|
||||||
|
@ -688,7 +689,7 @@ namespace util {
|
||||||
if (!p_quote.empty() && (*p_quote == '"')) {
|
if (!p_quote.empty() && (*p_quote == '"')) {
|
||||||
return unescape_string(std::forward<R>(writer), p_item);
|
return unescape_string(std::forward<R>(writer), p_item);
|
||||||
} else {
|
} else {
|
||||||
writer = ostd::copy(p_item, std::move(writer));
|
ostd::range_put_all(writer, p_item);
|
||||||
return std::forward<R>(writer);
|
return std::forward<R>(writer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -759,7 +760,7 @@ private:
|
||||||
case cs_value_type::String:
|
case cs_value_type::String:
|
||||||
case cs_value_type::Cstring:
|
case cs_value_type::Cstring:
|
||||||
case cs_value_type::Macro: {
|
case cs_value_type::Macro: {
|
||||||
writer = ostd::copy(vals[i].get_strr(), writer);
|
ostd::range_put_all(writer, vals[i].get_strr());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
@ -768,7 +769,7 @@ private:
|
||||||
if (i == (vals.size() - 1)) {
|
if (i == (vals.size() - 1)) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
writer = ostd::copy(sep, writer);
|
ostd::range_put_all(writer, sep);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -431,7 +431,7 @@ end:
|
||||||
(p.get_raw_item(true).front() == '"')) {
|
(p.get_raw_item(true).front() == '"')) {
|
||||||
util::unescape_string(buf, p.get_raw_item());
|
util::unescape_string(buf, p.get_raw_item());
|
||||||
} else {
|
} else {
|
||||||
buf = ostd::copy(p.get_raw_item(), std::move(buf));
|
ostd::range_put_all(buf, p.get_raw_item());
|
||||||
}
|
}
|
||||||
if ((n + 1) < len) {
|
if ((n + 1) < len) {
|
||||||
if ((len > 2) || conj.empty()) {
|
if ((len > 2) || conj.empty()) {
|
||||||
|
@ -439,7 +439,7 @@ end:
|
||||||
}
|
}
|
||||||
if ((n + 2 == len) && !conj.empty()) {
|
if ((n + 2 == len) && !conj.empty()) {
|
||||||
buf.put(' ');
|
buf.put(' ');
|
||||||
buf = ostd::copy(conj, std::move(buf));
|
ostd::range_put_all(buf, conj);
|
||||||
}
|
}
|
||||||
buf.put(' ');
|
buf.put(' ');
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue