diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2015-06-13 23:17:13 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2015-06-13 23:17:13 -0700 |
commit | 7cc045d93e1b328cb741173c3746d7c1b91d50d0 (patch) | |
tree | 6dea5c03b95fe4f0c2cb263e6b745a80217595c2 /013literal_string.cc | |
parent | 06462ccda6484b6b0cb7094398942f37defc098b (diff) | |
download | mu-7cc045d93e1b328cb741173c3746d7c1b91d50d0.tar.gz |
1560
Diffstat (limited to '013literal_string.cc')
-rw-r--r-- | 013literal_string.cc | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/013literal_string.cc b/013literal_string.cc index 41644b1c..3d60a30f 100644 --- a/013literal_string.cc +++ b/013literal_string.cc @@ -69,6 +69,26 @@ string slurp_quoted(istream& in) { return; } +:(after "string reagent::to_string()") + if (!properties.at(0).second.empty() && properties.at(0).second.at(0) == "literal-string") { + return emit_literal_string(name); + } + +:(code) +string emit_literal_string(string name) { + size_t pos = 0; + while (pos != string::npos) + pos = replace(name, "\n", "\\n", pos); + return "{name: \""+name+"\", properties: [_: \"literal-string\"]}"; +} + +size_t replace(string& str, const string& from, const string& to, size_t n) { + size_t result = str.find(from, n); + if (result != string::npos) + str.replace(result, from.length(), to); + return result; +} + :(scenario string_literal_nested) recipe main [ 1:address:array:character <- copy [abc [def]] |