( code: string, token: string, expectName: string | boolean = false, )
| 48 | } |
| 49 | |
| 50 | export function getPositionInCode( |
| 51 | code: string, |
| 52 | token: string, |
| 53 | expectName: string | boolean = false, |
| 54 | ): Pos { |
| 55 | const generatedOffset = code.indexOf(token) |
| 56 | let line = 1 |
| 57 | let lastNewLinePos = -1 |
| 58 | for (let i = 0; i < generatedOffset; i++) { |
| 59 | if (code.charCodeAt(i) === 10 /* newline char code */) { |
| 60 | line++ |
| 61 | lastNewLinePos = i |
| 62 | } |
| 63 | } |
| 64 | const res: Pos = { |
| 65 | line, |
| 66 | column: |
| 67 | lastNewLinePos === -1 |
| 68 | ? generatedOffset |
| 69 | : generatedOffset - lastNewLinePos - 1, |
| 70 | } |
| 71 | if (expectName) { |
| 72 | res.name = typeof expectName === 'string' ? expectName : token |
| 73 | } |
| 74 | return res |
| 75 | } |
no test coverage detected