diff --git a/src/components/markdown.component.ts b/src/components/markdown.component.ts index 987abe4..15b9bb0 100644 --- a/src/components/markdown.component.ts +++ b/src/components/markdown.component.ts @@ -10,18 +10,35 @@ import * as marked from 'marked'; }) export class MarkdownComponent { @Input() markdown: string = '' + md: any parsedMarkdown: string; - ngOnChanges() { - const md = marked.setOptions({ + constructor() { + // hijack the renderer + const renderer = new marked.Renderer(); + + // nest code block within pre tags + renderer.code = (code, lang) => { + return `
${code}
`; + } + + // nest inline code block within pre tags + renderer.codespan = (code) => { + return `
${code}
`; + } + this.md = marked.setOptions({ gfm: true, tables: true, breaks: false, pedantic: false, sanitize: true, smartLists: true, - smartypants: false + smartypants: false, + renderer: renderer }); - this.parsedMarkdown = md.parse(this.markdown || ''); + } + + ngOnChanges() { + this.parsedMarkdown = this.md.parse(this.markdown || ''); } } diff --git a/src/views/components.component.ts b/src/views/components.component.ts index 9c92e80..75f848b 100644 --- a/src/views/components.component.ts +++ b/src/views/components.component.ts @@ -180,5 +180,5 @@ import { ENTRY_MARKDOWN } from '../services' `] }) export class ComponentsView { - constructor(@Inject(ENTRY_MARKDOWN) public entryMarkdown: string) { } + constructor(@Inject(ENTRY_MARKDOWN) public entryMarkdown: string) {} }