summaryrefslogtreecommitdiff
path: root/packages/astro-parser/src/parse/state/codespan.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/astro-parser/src/parse/state/codespan.ts')
-rw-r--r--packages/astro-parser/src/parse/state/codespan.ts25
1 files changed, 25 insertions, 0 deletions
diff --git a/packages/astro-parser/src/parse/state/codespan.ts b/packages/astro-parser/src/parse/state/codespan.ts
new file mode 100644
index 000000000..b685800a7
--- /dev/null
+++ b/packages/astro-parser/src/parse/state/codespan.ts
@@ -0,0 +1,25 @@
+// @ts-nocheck
+import { Parser } from '../index.js';
+
+export default function codespan(parser: Parser) {
+ const start = parser.index;
+ const open = parser.match_regex(/(?<!\\)`{1,2}/);
+ parser.index += open!.length;
+
+ let raw = open;
+ while (parser.index < parser.template.length && !parser.match(open)) {
+ raw += parser.template[parser.index++];
+ }
+ parser.eat(open, true);
+ raw += open;
+
+ const node = {
+ start,
+ end: parser.index,
+ type: 'CodeSpan',
+ raw,
+ data: raw?.slice(open?.length, open?.length * -1).replace(/^ /, '').replace(/ $/, '')
+ };
+
+ parser.current().children.push(node);
+}