Skip to content

Commit 4d4b9b6

Browse files
committed
small simplicification and bug fix
1 parent 4548310 commit 4d4b9b6

File tree

2 files changed

+5
-26
lines changed

2 files changed

+5
-26
lines changed

resources/minitscript/tests/string-test.tscript

+1
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,5 @@ function: main()
2020
console.printLine('String::regexSearch("Who is this Andreas0815?", "Andreas([0-9]*)", $matches): ' + $matches)
2121
end
2222
console.printLine("\" ABCDEF \"->toLowerCase()->trim(): " + " ABCDEF "->toLowerCase()->trim());
23+
console.printLine("C:\\msys64\\usr\\bin\\bash -c \"export PKG_CONFIG_PATH=/mingw64/lib/pkgconfig:/mingw64/share/pkgconfig && ")
2324
end

src/minitscript/minitscript/Transpiler.h

+4-26
Original file line numberDiff line numberDiff line change
@@ -144,13 +144,9 @@ class minitscript::minitscript::Transpiler {
144144
* @return escaped string
145145
*/
146146
inline static const string escapeString(const string& str) {
147-
//
148-
auto result = str;
149-
const array<char, 11> escapeSequences = {'0', 'a', 'b', 'f', 'n', 'r', 't', 'v', 'U', '"'};
150-
for (const auto c: escapeSequences) {
151-
result = StringTools::replace(result, string("\\") + c, string("\\\\") + c);
152-
}
153-
//
147+
// escape control chars with backslash
148+
string result;
149+
result = StringTools::replace(str, "\\", "\\\\");
154150
result = StringTools::replace(result, "\0", "\\0");
155151
result = StringTools::replace(result, "\a", "\\a");
156152
result = StringTools::replace(result, "\b", "\\b");
@@ -160,25 +156,7 @@ class minitscript::minitscript::Transpiler {
160156
result = StringTools::replace(result, "\t", "\\t");
161157
result = StringTools::replace(result, "\v", "\\v");
162158
result = StringTools::replace(result, "\"", "\\\"");
163-
//
164-
string result2;
165-
auto lc = '\0';
166-
auto llc = '\0';
167-
for (auto i = 0; i < result.size(); i++) {
168-
//
169-
auto c = result[i];
170-
auto nc = i < result.size() - 1?result[i + 1]:'\0';
171-
if (c == '\\' && lc != '\\' && nc != '\\' && find(escapeSequences.begin(), escapeSequences.end(), nc) == escapeSequences.end()) {
172-
result2+= "\\\\";
173-
} else {
174-
result2+= c;
175-
}
176-
//
177-
auto lc = c;
178-
auto llc = lc;
179-
}
180-
//
181-
return result2;
159+
return result;
182160
}
183161

184162
/**

0 commit comments

Comments
 (0)