refractor
Version:
Lightweight, robust, elegant virtual syntax highlighting using Prism
33 lines (31 loc) • 1.07 kB
JavaScript
module.exports = oz;
oz.displayName = 'oz';
oz.aliases = [];
function oz(Prism) {
Prism.languages.oz = {
comment: /\/\*[\s\S]*?\*\/|%.*/,
string: {
pattern: /"(?:[^"\\]|\\[\s\S])*"/,
greedy: true
},
atom: {
pattern: /'(?:[^'\\]|\\[\s\S])*'/,
greedy: true,
alias: 'builtin'
},
keyword: /[$_]|\[\]|\b(?:at|attr|case|catch|choice|class|cond|declare|define|dis|else(?:case|if)?|end|export|fail|false|feat|finally|from|fun|functor|if|import|in|local|lock|meth|nil|not|of|or|prepare|proc|prop|raise|require|self|skip|then|thread|true|try|unit)\b/,
function: [
/[a-z][A-Za-z\d]*(?=\()/,
{
pattern: /(\{)[A-Z][A-Za-z\d]*/,
lookbehind: true
}
],
number: /\b(?:0[bx][\da-f]+|\d+\.?\d*(?:e~?\d+)?\b)|&(?:[^\\]|\\(?:\d{3}|.))/i,
variable: /\b[A-Z][A-Za-z\d]*|`(?:[^`\\]|\\.)+`/,
'attr-name': /\w+(?=:)/,
operator: /:(?:=|::?)|<[-:=]?|=(?:=|<?:?)|>=?:?|\\=:?|!!?|[|#+\-*\/,~^@]|\b(?:andthen|div|mod|orelse)\b/,
punctuation: /[\[\](){}.:;?]/
};
}
;