aboutsummaryrefslogtreecommitdiff
path: root/src/FbTk/Luamm.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/FbTk/Luamm.cc')
-rw-r--r--src/FbTk/Luamm.cc24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/FbTk/Luamm.cc b/src/FbTk/Luamm.cc
index 8824b06..3b0c4ba 100644
--- a/src/FbTk/Luamm.cc
+++ b/src/FbTk/Luamm.cc
@@ -219,6 +219,30 @@ namespace lua {
219 l->replace(-2); 219 l->replace(-2);
220 } 220 }
221 221
222 std::string quote(const std::string &str)
223 {
224 std::string bad = "\n\\";
225 bad += '\0';
226
227 // first try to quote using normal quotes without escaping
228 if(str.find_first_of(bad + '"') == std::string::npos)
229 return '"' + str + '"';
230 else if(str.find_first_of(bad + '\'') == std::string::npos)
231 return '\'' + str + '\'';
232
233 // use long quotes
234 bad.clear();
235
236 // find the first long quote that works
237 while(str.find(']' + bad + ']') != std::string::npos)
238 bad += '=';
239
240 std::string out = '[' + bad + '[';
241 if(str.find('\n') != std::string::npos)
242 out += '\n';
243 return out + str + ']' + bad + ']';
244 }
245
222 state::state() 246 state::state()
223 : cobj(luaL_newstate()), valid(new bool(true)) 247 : cobj(luaL_newstate()), valid(new bool(true))
224 { 248 {