diff options
Diffstat (limited to 'public/prism/prism-livescript.js')
| -rw-r--r-- | public/prism/prism-livescript.js | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/public/prism/prism-livescript.js b/public/prism/prism-livescript.js new file mode 100644 index 0000000..682b506 --- /dev/null +++ b/public/prism/prism-livescript.js @@ -0,0 +1,123 @@ +Prism.languages.livescript = { + comment: [ + { + pattern: /(^|[^\\])\/\*[\s\S]*?\*\//, + lookbehind: true, + }, + { + pattern: /(^|[^\\])#.*/, + lookbehind: true, + }, + ], + 'interpolated-string': { + /* Look-behind and look-ahead prevents wrong behavior of the greedy pattern + * forcing it to match """-quoted string when it would otherwise match "-quoted first. */ + pattern: /(^|[^"])("""|")(?:\\[\s\S]|(?!\2)[^\\])*\2(?!")/, + lookbehind: true, + greedy: true, + inside: { + variable: { + pattern: /(^|[^\\])#[a-z_](?:-?[a-z]|[\d_])*/m, + lookbehind: true, + }, + interpolation: { + pattern: /(^|[^\\])#\{[^}]+\}/m, + lookbehind: true, + inside: { + 'interpolation-punctuation': { + pattern: /^#\{|\}$/, + alias: 'variable', + }, + // See rest below + }, + }, + string: /[\s\S]+/, + }, + }, + string: [ + { + pattern: /('''|')(?:\\[\s\S]|(?!\1)[^\\])*\1/, + greedy: true, + }, + { + pattern: /<\[[\s\S]*?\]>/, + greedy: true, + }, + /\\[^\s,;\])}]+/, + ], + regex: [ + { + pattern: /\/\/(?:\[[^\r\n\]]*\]|\\.|(?!\/\/)[^\\\[])+\/\/[gimyu]{0,5}/, + greedy: true, + inside: { + comment: { + pattern: /(^|[^\\])#.*/, + lookbehind: true, + }, + }, + }, + { + pattern: /\/(?:\[[^\r\n\]]*\]|\\.|[^/\\\r\n\[])+\/[gimyu]{0,5}/, + greedy: true, + }, + ], + keyword: { + pattern: + /(^|(?!-).)\b(?:break|case|catch|class|const|continue|default|do|else|extends|fallthrough|finally|for(?: ever)?|function|if|implements|it|let|loop|new|null|otherwise|own|return|super|switch|that|then|this|throw|try|unless|until|var|void|when|while|yield)(?!-)\b/m, + lookbehind: true, + }, + 'keyword-operator': { + pattern: + /(^|[^-])\b(?:(?:delete|require|typeof)!|(?:and|by|delete|export|from|import(?: all)?|in|instanceof|is(?: not|nt)?|not|of|or|til|to|typeof|with|xor)(?!-)\b)/m, + lookbehind: true, + alias: 'operator', + }, + boolean: { + pattern: /(^|[^-])\b(?:false|no|off|on|true|yes)(?!-)\b/m, + lookbehind: true, + }, + argument: { + // Don't match .&. nor && + pattern: /(^|(?!\.&\.)[^&])&(?!&)\d*/m, + lookbehind: true, + alias: 'variable', + }, + number: /\b(?:\d+~[\da-z]+|\d[\d_]*(?:\.\d[\d_]*)?(?:[a-z]\w*)?)/i, + identifier: /[a-z_](?:-?[a-z]|[\d_])*/i, + operator: [ + // Spaced . + { + pattern: /( )\.(?= )/, + lookbehind: true, + }, + // Full list, in order: + // .= .~ .. ... + // .&. .^. .<<. .>>. .>>>. + // := :: ::= + // && + // || |> + // < << <<< <<<< + // <- <-- <-! <--! + // <~ <~~ <~! <~~! + // <| <= <? + // > >> >= >? + // - -- -> --> + // + ++ + // @ @@ + // % %% + // * ** + // ! != !~= + // !~> !~~> + // !-> !--> + // ~ ~> ~~> ~= + // = == + // ^ ^^ + // / ? + /\.(?:[=~]|\.\.?)|\.(?:[&|^]|<<|>>>?)\.|:(?:=|:=?)|&&|\|[|>]|<(?:<<?<?|--?!?|~~?!?|[|=?])?|>[>=?]?|-(?:->?|>)?|\+\+?|@@?|%%?|\*\*?|!(?:~?=|--?>|~?~>)?|~(?:~?>|=)?|==?|\^\^?|[\/?]/, + ], + punctuation: /[(){}\[\]|.,:;`]/, +}; + +Prism.languages.livescript['interpolated-string'].inside[ + 'interpolation' +].inside.rest = Prism.languages.livescript; |
