( source: string, index: number, )
| 159 | } |
| 160 | |
| 161 | function readStringLiteral( |
| 162 | source: string, |
| 163 | index: number, |
| 164 | ): { value: string; end: number } | null { |
| 165 | const quote = source[index]; |
| 166 | if (quote !== "\"" && quote !== "'" && quote !== "`") return null; |
| 167 | |
| 168 | let value = ""; |
| 169 | for (let current = index + 1; current < source.length; current++) { |
| 170 | const char = source[current]; |
| 171 | |
| 172 | if (char === "\\") { |
| 173 | const escaped = source[current + 1]; |
| 174 | if (escaped === undefined) return null; |
| 175 | value += escaped; |
| 176 | current += 1; |
| 177 | continue; |
| 178 | } |
| 179 | |
| 180 | if (char === quote) { |
| 181 | return { value, end: current + 1 }; |
| 182 | } |
| 183 | |
| 184 | value += char; |
| 185 | } |
| 186 | |
| 187 | return null; |
| 188 | } |
| 189 | |
| 190 | function readIdentifier( |
| 191 | source: string, |
no outgoing calls
no test coverage detected