| 121 | } |
| 122 | |
| 123 | QByteArray escapeJavaScriptString(const QByteArray& str) |
| 124 | { |
| 125 | // The special symbols that have to be escaped are listed e.g. here: |
| 126 | // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String#escape_sequences |
| 127 | QByteArray result; |
| 128 | result.reserve(str.size()); |
| 129 | |
| 130 | for (char ch : str) { |
| 131 | switch (ch) { |
| 132 | case '\n': |
| 133 | result += "\\n"; |
| 134 | break; |
| 135 | case '\r': |
| 136 | result += "\\r"; |
| 137 | break; |
| 138 | case '\t': |
| 139 | result += "\\t"; |
| 140 | break; |
| 141 | case '\b': |
| 142 | result += "\\b"; |
| 143 | break; |
| 144 | case '\f': |
| 145 | result += "\\f"; |
| 146 | break; |
| 147 | case '\v': |
| 148 | result += "\\v"; |
| 149 | break; |
| 150 | case '\0': |
| 151 | result += "\\0"; |
| 152 | break; |
| 153 | case '\'': |
| 154 | case '"': |
| 155 | case '\\': |
| 156 | result += '\\'; |
| 157 | [[fallthrough]]; |
| 158 | default: |
| 159 | result += ch; |
| 160 | } |
| 161 | } |
| 162 | |
| 163 | return result; |
| 164 | } |
| 165 | } |
| 166 | |
| 167 | int KDevelop::findAsciiIdentifierLength(QStringView str) |