Skip to content

Commit 80bc241

Browse files
authored
🔄 Refactor myst-parse to expose parsing options (#2243)
1 parent 9cb280a commit 80bc241

File tree

2 files changed

+26
-17
lines changed

2 files changed

+26
-17
lines changed

.changeset/neat-knives-play.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"myst-cli": patch
3+
---
4+
5+
Refactor function to expose parsing options

packages/myst-cli/src/process/myst.ts

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { mystParse } from 'myst-parser';
1+
import { mystParse, type AllOptions } from 'myst-parser';
22
import { buttonRole } from 'myst-ext-button';
33
import { cardDirective } from 'myst-ext-card';
44
import { gridDirectives } from 'myst-ext-grid';
@@ -20,6 +20,24 @@ type Options = {
2020
ignoreFrontmatter?: boolean;
2121
};
2222

23+
export function getMystParserOptions(session: ISession, opts?: Options): Partial<AllOptions> {
24+
return {
25+
markdownit: { linkify: true },
26+
directives: [
27+
cardDirective,
28+
...gridDirectives,
29+
proofDirective,
30+
...exerciseDirectives,
31+
...tabDirectives,
32+
...(session.plugins?.directives ?? []),
33+
],
34+
extensions: {
35+
frontmatter: !opts?.ignoreFrontmatter,
36+
},
37+
roles: [buttonRole, ...(session.plugins?.roles ?? [])],
38+
};
39+
}
40+
2341
/**
2442
* Parse MyST content using the full suite of built-in directives, roles, and plugins
2543
*
@@ -35,22 +53,8 @@ export function parseMyst(
3553
): GenericParent {
3654
const vfile = new VFile();
3755
vfile.path = file;
38-
const parsed = mystParse(content, {
39-
markdownit: { linkify: true },
40-
directives: [
41-
cardDirective,
42-
...gridDirectives,
43-
proofDirective,
44-
...exerciseDirectives,
45-
...tabDirectives,
46-
...(session.plugins?.directives ?? []),
47-
],
48-
extensions: {
49-
frontmatter: !opts?.ignoreFrontmatter,
50-
},
51-
roles: [buttonRole, ...(session.plugins?.roles ?? [])],
52-
vfile,
53-
});
56+
const parserOptions = getMystParserOptions(session, opts);
57+
const parsed = mystParse(content, { ...parserOptions, vfile });
5458
logMessagesFromVFile(session, vfile);
5559
return parsed;
5660
}

0 commit comments

Comments
 (0)