diff options
| author | Armand Philippot <git@armandphilippot.com> | 2021-12-30 19:47:21 +0100 | 
|---|---|---|
| committer | Armand Philippot <git@armandphilippot.com> | 2021-12-30 19:47:21 +0100 | 
| commit | a98b5ea6fe8e8cc98a55e0fd793e6e8660ea31c1 (patch) | |
| tree | 542810ab5aef99150db228bb54fd58303dcb31c7 /public/prism/prism-coffeescript.js | |
| parent | ab355897a12b7bda1089a44de326d41455a0f7a3 (diff) | |
chore: add prismjs for syntax highlighting
Diffstat (limited to 'public/prism/prism-coffeescript.js')
| -rw-r--r-- | public/prism/prism-coffeescript.js | 94 | 
1 files changed, 94 insertions, 0 deletions
| diff --git a/public/prism/prism-coffeescript.js b/public/prism/prism-coffeescript.js new file mode 100644 index 0000000..c1ca019 --- /dev/null +++ b/public/prism/prism-coffeescript.js @@ -0,0 +1,94 @@ +(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); | 
