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/parse/read/expression.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/parse/read/expression.ts')
-rw-r--r-- | src/compiler/parse/read/expression.ts | 67 |
1 files changed, 35 insertions, 32 deletions
diff --git a/src/compiler/parse/read/expression.ts b/src/compiler/parse/read/expression.ts index 3af2868e6..56e79265d 100644 --- a/src/compiler/parse/read/expression.ts +++ b/src/compiler/parse/read/expression.ts @@ -6,36 +6,39 @@ import { whitespace } from '../../utils/patterns.js'; // import { Node } from 'estree'; export default function read_expression(parser: Parser): string { - try { - const node = parse_expression_at(parser.template, parser.index); - - let num_parens = 0; - - for (let i = parser.index; i < node.start; i += 1) { - if (parser.template[i] === '(') num_parens += 1; - } - - let index = node.end; - while (num_parens > 0) { - const char = parser.template[index]; - - if (char === ')') { - num_parens -= 1; - } else if (!whitespace.test(char)) { - parser.error({ - code: 'unexpected-token', - message: 'Expected )' - }, index); - } - - index += 1; - } - - parser.index = index; - - return parser.template.substring(node.start, node.end); - // return node as Node; - } catch (err) { - parser.acorn_error(err); - } + try { + const node = parse_expression_at(parser.template, parser.index); + + let num_parens = 0; + + for (let i = parser.index; i < node.start; i += 1) { + if (parser.template[i] === '(') num_parens += 1; + } + + let index = node.end; + while (num_parens > 0) { + const char = parser.template[index]; + + if (char === ')') { + num_parens -= 1; + } else if (!whitespace.test(char)) { + parser.error( + { + code: 'unexpected-token', + message: 'Expected )', + }, + index + ); + } + + index += 1; + } + + parser.index = index; + + return parser.template.substring(node.start, node.end); + // return node as Node; + } catch (err) { + parser.acorn_error(err); + } } |