diff options
Diffstat (limited to 'packages/astro-parser/src/parse/state/codespan.ts')
-rw-r--r-- | packages/astro-parser/src/parse/state/codespan.ts | 25 |
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); +} |