diff options
author | 2021-03-19 17:07:45 -0400 | |
---|---|---|
committer | 2021-03-19 17:07:45 -0400 | |
commit | 17c3c98f07628b43b941b84831e8e1f9bcd7ca46 (patch) | |
tree | 2e2b3c7d6bd67ebaabe6636ae6867ad368ac6c3a /src/compiler/utils/get_code_frame.ts | |
parent | 8ebc077cb0d9f50aae22d2651bd5ef13fe4641d3 (diff) | |
download | astro-17c3c98f07628b43b941b84831e8e1f9bcd7ca46.tar.gz astro-17c3c98f07628b43b941b84831e8e1f9bcd7ca46.tar.zst astro-17c3c98f07628b43b941b84831e8e1f9bcd7ca46.zip |
Initial tests set up (#10)
* Begin debugging
* Initial tests set up
This adds tests using uvu (we can switch if people want) and restructures things a bit so that it's easier to test.
Like in snowpack you set up a little project. In our tests you can say:
```js
const result = await runtime.load('/blog/hello-world')
```
And analyze the result. I included a `test-helpers.js` which has a function that will turn HTML into a cheerio instance, for inspecting the result HTML.
* Add CI
* Remove extra console logs
* Formatting
Diffstat (limited to 'src/compiler/utils/get_code_frame.ts')
-rw-r--r-- | src/compiler/utils/get_code_frame.ts | 40 |
1 files changed, 18 insertions, 22 deletions
diff --git a/src/compiler/utils/get_code_frame.ts b/src/compiler/utils/get_code_frame.ts index 1097f5b3d..a0c296672 100644 --- a/src/compiler/utils/get_code_frame.ts +++ b/src/compiler/utils/get_code_frame.ts @@ -1,31 +1,27 @@ function tabs_to_spaces(str: string) { - return str.replace(/^\t+/, match => match.split('\t').join(' ')); + return str.replace(/^\t+/, (match) => match.split('\t').join(' ')); } -export default function get_code_frame( - source: string, - line: number, - column: number -) { - const lines = source.split('\n'); +export default function get_code_frame(source: string, line: number, column: number) { + const lines = source.split('\n'); - const frame_start = Math.max(0, line - 2); - const frame_end = Math.min(line + 3, lines.length); + const frame_start = Math.max(0, line - 2); + const frame_end = Math.min(line + 3, lines.length); - const digits = String(frame_end + 1).length; + const digits = String(frame_end + 1).length; - return lines - .slice(frame_start, frame_end) - .map((str, i) => { - const isErrorLine = frame_start + i === line; - const line_num = String(i + frame_start + 1).padStart(digits, ' '); + return lines + .slice(frame_start, frame_end) + .map((str, i) => { + const isErrorLine = frame_start + i === line; + const line_num = String(i + frame_start + 1).padStart(digits, ' '); - if (isErrorLine) { - const indicator = ' '.repeat(digits + 2 + tabs_to_spaces(str.slice(0, column)).length) + '^'; - return `${line_num}: ${tabs_to_spaces(str)}\n${indicator}`; - } + if (isErrorLine) { + const indicator = ' '.repeat(digits + 2 + tabs_to_spaces(str.slice(0, column)).length) + '^'; + return `${line_num}: ${tabs_to_spaces(str)}\n${indicator}`; + } - return `${line_num}: ${tabs_to_spaces(str)}`; - }) - .join('\n'); + return `${line_num}: ${tabs_to_spaces(str)}`; + }) + .join('\n'); } |