refractor
Version:
Lightweight, robust, elegant virtual syntax highlighting using Prism
30 lines (28 loc) • 1.11 kB
JavaScript
module.exports = monkey;
monkey.displayName = 'monkey';
monkey.aliases = [];
function monkey(Prism) {
Prism.languages.monkey = {
string: /"[^"\r\n]*"/,
comment: [/^#Rem\s+[\s\S]*?^#End/im, /'.+/],
preprocessor: {
pattern: /(^[ \t]*)#.+/m,
lookbehind: true,
alias: 'comment'
},
function: /\w+(?=\()/,
'type-char': {
pattern: /(\w)[?%#$]/,
lookbehind: true,
alias: 'variable'
},
number: {
pattern: /((?:\.\.)?)(?:(?:\b|\B-\.?|\B\.)\d+(?:(?!\.\.)\.\d*)?|\$[\da-f]+)/i,
lookbehind: true
},
keyword: /\b(?:Void|Strict|Public|Private|Property|Bool|Int|Float|String|Array|Object|Continue|Exit|Import|Extern|New|Self|Super|Try|Catch|Eachin|True|False|Extends|Abstract|Final|Select|Case|Default|Const|Local|Global|Field|Method|Function|Class|End|If|Then|Else|ElseIf|EndIf|While|Wend|Repeat|Until|Forever|For|To|Step|Next|Return|Module|Interface|Implements|Inline|Throw|Null)\b/i,
operator: /\.\.|<[=>]?|>=?|:?=|(?:[+\-*\/&~|]|\b(?:Mod|Shl|Shr)\b)=?|\b(?:And|Not|Or)\b/i,
punctuation: /[.,:;()\[\]]/
};
}
;