Prism.languages.markdown = Prism.languages.extend('markup', {}); Prism.languages.insertBefore('markdown', 'prolog', { 'blockquote': { // > ... pattern: /(^|\n)>(?:[\t ]*>)*/, lookbehind: true, alias: 'punctuation' }, 'code': [ { // Prefixed by 4 spaces or 1 tab pattern: /(^|\n)(?: {4}|\t).+/, lookbehind: true, alias: 'keyword' }, { // `code` // ``code`` pattern: /``.+?``|`[^`\n]+`/, alias: 'keyword' } ], 'title': [ { // title 1 // ======= // title 2 // ------- pattern: /\w+.*\n(?:==+|--+)/, alias: 'important', inside: { punctuation: /==+$|--+$/ } }, { // # title 1 // ###### title 6 pattern: /((?:^|\n)\s*)#+.+/, lookbehind: true, alias: 'important', inside: { punctuation: /^#+|#+$/ } } ], 'hr': { // *** // --- // * * * // ----------- pattern: /((?:^|\n)\s*)([*-])([\t ]*\2){2,}(?=\s*(?:\n|$))/, lookbehind: true, alias: 'punctuation' }, 'list': { // * item // + item // - item // 1. item pattern: /((?:^|\n)\s*)(?:[*+-]|\d+\.)(?=[\t ].)/, lookbehind: true, alias: 'punctuation' }, 'url-reference': { // [id]: http://example.com "Optional title" // [id]: http://example.com 'Optional title' // [id]: http://example.com (Optional title) // [id]: "Optional title" pattern: /!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:[^>]|\\>)+>)(?:[\t ]+(?:"(?:[^"]|\\")*"|'(?:[^']|\\')*'|\((?:[^)]|\\\))*\)))?/, inside: { 'variable': { pattern: /^(!?\[)[^\]]+/, lookbehind: true }, 'string': /(?:"(?:[^"]|\\")*"|'(?:[^']|\\')*'|\((?:[^)]|\\\))*\))$/, 'punctuation': /[[\]\(\)<>:]/ }, alias: 'url' }, 'bold': { // **strong** // __strong__ // Allow only one line break pattern: /(^|[^\\])(\*\*|__)(?:\n(?!\n)|.)+?\2/, lookbehind: true, inside: { 'punctuation': /^\*\*|^__|\*\*\s*$|__\s*$/ } }, 'italic': { // *em* // _em_ // Allow only one line break pattern: /(^|[^\\])(?:\*(?:\n(?!\n)|.)+?\*|_(?:\n(?!\n)|.)+?_)/, lookbehind: true, inside: { 'punctuation': /^[*_]|[*_]$/ } }, 'url': { // [example](http://example.com "Optional title") // [example] [id] pattern: /!?\[[^\]]+\](?:\([^\s)]+(?:[\t ]+"(?:[^"]|\\")*")?\)| ?\[[^\]\n]*\])/, inside: { 'variable': { pattern: /(!?\[)[^\]]+(?=\]$)/, lookbehind: true }, 'string': { pattern: /"(?:[^"]|\\")*"(?=\)$)/ } } } }); Prism.languages.markdown['bold'].inside['url'] = Prism.util.clone(Prism.languages.markdown['url']); Prism.languages.markdown['italic'].inside['url'] = Prism.util.clone(Prism.languages.markdown['url']); Prism.languages.markdown['bold'].inside['italic'] = Prism.util.clone(Prism.languages.markdown['italic']); Prism.languages.markdown['italic'].inside['bold'] = Prism.util.clone(Prism.languages.markdown['bold']);