123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- 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;
|