# @title CoffeeScript # @matchext coffee # @matchprogram coffee # CoffeeScript lang definition file # first check if the input matches a comment include "script_comment.lang" keyword = "true|false|null|this|new|delete|typeof|in|instanceof|return|throw|break|continue|debugger|if|else|switch|for|while|do|try|catch|finally|class|extends|super|undefined|then|unless|until|loop|of|by|when|and|or|is|isnt|not|yes|no|on|off" # next check if it matches a division operator, which can occur only # after a number, an identifier, or certain symbols (symbol,normal,symbol) = `(\+\+|--|\)|\])(\s*)(/=?(?![*/]))` (number,normal,symbol) = `(0x[[:xdigit:]]+|(?:[[:digit:]]*\.)?[[:digit:]]+(?:[eE][+-]?[[:digit:]]+)?)(\s*)(/(?![*/]))` (normal,symbol) = `([[:alpha:]$_][[:alnum:]$_]*\s*)(/=?(?![*/]))` # finally check if it matches a regular expression regexp = '/(\\.|[^*\\/])(\\.|[^\\/])*/[gim]*' comment delim '(^\###)' '^(\###)' multiline include "number.lang" include "c_string.lang" include "symbols.lang" include "function.lang"