You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
2.1 KiB
96 lines
2.1 KiB
(function (Prism) { |
|
|
|
// Ignore comments starting with { to privilege string interpolation highlighting |
|
var comment = /#(?!\{).+/; |
|
var interpolation = { |
|
pattern: /#\{[^}]+\}/, |
|
alias: 'variable' |
|
}; |
|
|
|
Prism.languages.coffeescript = Prism.languages.extend('javascript', { |
|
'comment': comment, |
|
'string': [ |
|
|
|
// Strings are multiline |
|
{ |
|
pattern: /'(?:\\[\s\S]|[^\\'])*'/, |
|
greedy: true |
|
}, |
|
|
|
{ |
|
// Strings are multiline |
|
pattern: /"(?:\\[\s\S]|[^\\"])*"/, |
|
greedy: true, |
|
inside: { |
|
'interpolation': interpolation |
|
} |
|
} |
|
], |
|
'keyword': /\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/, |
|
'class-member': { |
|
pattern: /@(?!\d)\w+/, |
|
alias: 'variable' |
|
} |
|
}); |
|
|
|
Prism.languages.insertBefore('coffeescript', 'comment', { |
|
'multiline-comment': { |
|
pattern: /###[\s\S]+?###/, |
|
alias: 'comment' |
|
}, |
|
|
|
// Block regexp can contain comments and interpolation |
|
'block-regex': { |
|
pattern: /\/{3}[\s\S]*?\/{3}/, |
|
alias: 'regex', |
|
inside: { |
|
'comment': comment, |
|
'interpolation': interpolation |
|
} |
|
} |
|
}); |
|
|
|
Prism.languages.insertBefore('coffeescript', 'string', { |
|
'inline-javascript': { |
|
pattern: /`(?:\\[\s\S]|[^\\`])*`/, |
|
inside: { |
|
'delimiter': { |
|
pattern: /^`|`$/, |
|
alias: 'punctuation' |
|
}, |
|
'script': { |
|
pattern: /[\s\S]+/, |
|
alias: 'language-javascript', |
|
inside: Prism.languages.javascript |
|
} |
|
} |
|
}, |
|
|
|
// Block strings |
|
'multiline-string': [ |
|
{ |
|
pattern: /'''[\s\S]*?'''/, |
|
greedy: true, |
|
alias: 'string' |
|
}, |
|
{ |
|
pattern: /"""[\s\S]*?"""/, |
|
greedy: true, |
|
alias: 'string', |
|
inside: { |
|
interpolation: interpolation |
|
} |
|
} |
|
] |
|
|
|
}); |
|
|
|
Prism.languages.insertBefore('coffeescript', 'keyword', { |
|
// Object property |
|
'property': /(?!\d)\w+(?=\s*:(?!:))/ |
|
}); |
|
|
|
delete Prism.languages.coffeescript['template-string']; |
|
|
|
Prism.languages.coffee = Prism.languages.coffeescript; |
|
}(Prism));
|
|
|