@analogjs/platform
Version:
The fullstack meta-framework for Angular
54 lines • 4.18 kB
JavaScript
import { marked } from 'marked';
import { gfmHeadingId } from 'marked-gfm-heading-id';
import { mangle } from 'marked-mangle';
export class MarkedSetupService {
constructor(options, highlighter) {
this.options = options;
this.highlighter = highlighter;
const analogMarkedExtension = {
pedantic: false,
gfm: true,
breaks: false,
renderer: {
code({ text, lang }) {
// Let's do a language based detection like on GitHub
// So we can still have non-interpreted mermaid code
if (lang === 'mermaid') {
return '<pre class="mermaid">' + text + '</pre>';
}
if (!lang) {
return '<pre><code>' + text + '</code></pre>';
}
if (highlighter?.augmentCodeBlock) {
return highlighter?.augmentCodeBlock(text, lang);
}
return `<pre class="language-${lang}"><code class="language-${lang}">${text}</code></pre>`;
},
codespan({ text }) {
return `<code>${text}</code>`;
},
paragraph({ tokens }) {
const text = this.parser.parseInline(tokens);
return `<p>${text}</p>`;
},
},
};
const extensions = [
analogMarkedExtension,
gfmHeadingId(),
...(options?.extensions || []),
];
if (this.options?.mangle) {
extensions.push(mangle());
}
if (this.highlighter) {
extensions.push(this.highlighter.getHighlightExtension());
}
marked.use(...extensions);
this.marked = marked;
}
getMarkedInstance() {
return this.marked;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2VkLXNldHVwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGF0Zm9ybS9zcmMvbGliL2NvbnRlbnQvbWFya2VkL21hcmtlZC1zZXR1cC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQTJCLE1BQU0sUUFBUSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBS3ZDLE1BQU0sT0FBTyxrQkFBa0I7SUFHN0IsWUFDbUIsT0FBMkIsRUFDM0IsV0FBc0M7UUFEdEMsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFDM0IsZ0JBQVcsR0FBWCxXQUFXLENBQTJCO1FBRXZELE1BQU0scUJBQXFCLEdBQW9CO1lBQzdDLFFBQVEsRUFBRSxLQUFLO1lBQ2YsR0FBRyxFQUFFLElBQUk7WUFDVCxNQUFNLEVBQUUsS0FBSztZQUNiLFFBQVEsRUFBRTtnQkFDUixJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO29CQUNqQixxREFBcUQ7b0JBQ3JELG9EQUFvRDtvQkFDcEQsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7d0JBQ3ZCLE9BQU8sdUJBQXVCLEdBQUcsSUFBSSxHQUFHLFFBQVEsQ0FBQztvQkFDbkQsQ0FBQztvQkFFRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7d0JBQ1YsT0FBTyxhQUFhLEdBQUcsSUFBSSxHQUFHLGVBQWUsQ0FBQztvQkFDaEQsQ0FBQztvQkFFRCxJQUFJLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO3dCQUNsQyxPQUFPLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQ25ELENBQUM7b0JBRUQsT0FBTyx3QkFBd0IsSUFBSSwyQkFBMkIsSUFBSSxLQUFLLElBQUksZUFBZSxDQUFDO2dCQUM3RixDQUFDO2dCQUNELFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRTtvQkFDZixPQUFPLFNBQVMsSUFBSSxTQUFTLENBQUM7Z0JBQ2hDLENBQUM7Z0JBQ0QsU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUFFO29CQUNsQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDN0MsT0FBTyxNQUFNLElBQUksTUFBTSxDQUFDO2dCQUMxQixDQUFDO2FBQ0Y7U0FDRixDQUFDO1FBRUYsTUFBTSxVQUFVLEdBQUc7WUFDakIscUJBQXFCO1lBQ3JCLFlBQVksRUFBRTtZQUNkLEdBQUcsQ0FBQyxPQUFPLEVBQUUsVUFBVSxJQUFJLEVBQUUsQ0FBQztTQUMvQixDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ3pCLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUM1QixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQztRQUM1RCxDQUFDO1FBRUQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO1FBRTFCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztDQUNGIn0=