You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
1.7 KiB
82 lines
1.7 KiB
Prism.languages.wiki = Prism.languages.extend('markup', { |
|
'block-comment': { |
|
pattern: /(^|[^\\])\/\*[\s\S]*?\*\//, |
|
lookbehind: true, |
|
alias: 'comment' |
|
}, |
|
'heading': { |
|
pattern: /^(=+)[^=\r\n].*?\1/m, |
|
inside: { |
|
'punctuation': /^=+|=+$/, |
|
'important': /.+/ |
|
} |
|
}, |
|
'emphasis': { |
|
// TODO Multi-line |
|
pattern: /('{2,5}).+?\1/, |
|
inside: { |
|
'bold-italic': { |
|
pattern: /(''''').+?(?=\1)/, |
|
lookbehind: true, |
|
alias: ['bold', 'italic'] |
|
}, |
|
'bold': { |
|
pattern: /(''')[^'](?:.*?[^'])?(?=\1)/, |
|
lookbehind: true |
|
}, |
|
'italic': { |
|
pattern: /('')[^'](?:.*?[^'])?(?=\1)/, |
|
lookbehind: true |
|
}, |
|
'punctuation': /^''+|''+$/ |
|
} |
|
}, |
|
'hr': { |
|
pattern: /^-{4,}/m, |
|
alias: 'punctuation' |
|
}, |
|
'url': [ |
|
/ISBN +(?:97[89][ -]?)?(?:\d[ -]?){9}[\dx]\b|(?:PMID|RFC) +\d+/i, |
|
/\[\[.+?\]\]|\[.+?\]/ |
|
], |
|
'variable': [ |
|
/__[A-Z]+__/, |
|
// FIXME Nested structures should be handled |
|
// {{formatnum:{{#expr:{{{3}}}}}}} |
|
/\{{3}.+?\}{3}/, |
|
/\{\{.+?\}\}/ |
|
], |
|
'symbol': [ |
|
/^#redirect/im, |
|
/~{3,5}/ |
|
], |
|
// Handle table attrs: |
|
// {| |
|
// ! style="text-align:left;"| Item |
|
// |} |
|
'table-tag': { |
|
pattern: /((?:^|[|!])[|!])[^|\r\n]+\|(?!\|)/m, |
|
lookbehind: true, |
|
inside: { |
|
'table-bar': { |
|
pattern: /\|$/, |
|
alias: 'punctuation' |
|
}, |
|
rest: Prism.languages.markup['tag'].inside |
|
} |
|
}, |
|
'punctuation': /^(?:\{\||\|\}|\|-|[*#:;!|])|\|\||!!/m |
|
}); |
|
|
|
Prism.languages.insertBefore('wiki', 'tag', { |
|
// Prevent highlighting inside <nowiki>, <source> and <pre> tags |
|
'nowiki': { |
|
pattern: /<(nowiki|pre|source)\b[^>]*>[\s\S]*?<\/\1>/i, |
|
inside: { |
|
'tag': { |
|
pattern: /<(?:nowiki|pre|source)\b[^>]*>|<\/(?:nowiki|pre|source)>/i, |
|
inside: Prism.languages.markup['tag'].inside |
|
} |
|
} |
|
} |
|
});
|
|
|