summaryrefslogtreecommitdiff
path: root/packages/astro-parser/src/parse/state/text.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/astro-parser/src/parse/state/text.ts')
-rw-r--r--packages/astro-parser/src/parse/state/text.ts10
1 files changed, 9 insertions, 1 deletions
diff --git a/packages/astro-parser/src/parse/state/text.ts b/packages/astro-parser/src/parse/state/text.ts
index eac810a0a..bde2ec5e4 100644
--- a/packages/astro-parser/src/parse/state/text.ts
+++ b/packages/astro-parser/src/parse/state/text.ts
@@ -8,7 +8,15 @@ export default function text(parser: Parser) {
let data = '';
- while (parser.index < parser.template.length && !parser.match('---') && !parser.match('<') && !parser.match('{') && !parser.match('`')) {
+ const shouldContinue = () => {
+ // Special case 'code' content to avoid tripping up on user code
+ if (parser.current().name === 'code') {
+ return !parser.match('<') && !parser.match('{');
+ }
+ return !parser.match('---') && !parser.match('<') && !parser.match('{') && !parser.match('`');
+ }
+
+ while (parser.index < parser.template.length && shouldContinue()) {
data += parser.template[parser.index++];
}