use range_put_all

master
Daniel Kolesa 2017-02-19 18:13:51 +01:00
parent 5c2c441925
commit 7294580ccf
2 changed files with 11 additions and 10 deletions

View File

@ -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);
} }
} }

View File

@ -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(' ');
} }