| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- import remarkFrontmatter from 'remark-frontmatter';
- import remarkParse from 'remark-parse';
- import remarkStringify from 'remark-stringify';
- import { unified } from 'unified';
- export const parseSlideFrontmatter = (frontmatter: string): [boolean, boolean] => {
- let marp = false;
- let slide = false;
- const lines = frontmatter.split('\n');
- lines.forEach((line) => {
- const [key, value] = line.split(':').map(part => part.trim());
- if (key === 'marp' && value === 'true') {
- marp = true;
- }
- if (key === 'slide' && value === 'true') {
- slide = true;
- }
- });
- return [marp, slide];
- };
- export const parseSlideFrontmatterInMarkdown = (markdown?: string): [boolean, boolean] => {
- let marp = false;
- let slide = false;
- unified()
- .use(remarkParse)
- .use(remarkStringify)
- .use(remarkFrontmatter, ['yaml'])
- .use(() => ((obj) => {
- if (obj.children[0]?.type === 'yaml') {
- [marp, slide] = parseSlideFrontmatter(obj.children[0]?.value as string);
- }
- }))
- .process(markdown as string);
- return [marp, slide];
- };
|