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-javascript.js | |
| parent | ab355897a12b7bda1089a44de326d41455a0f7a3 (diff) | |
chore: add prismjs for syntax highlighting
Diffstat (limited to 'public/prism/prism-javascript.js')
| -rw-r--r-- | public/prism/prism-javascript.js | 171 | 
1 files changed, 171 insertions, 0 deletions
| diff --git a/public/prism/prism-javascript.js b/public/prism/prism-javascript.js new file mode 100644 index 0000000..9d679c2 --- /dev/null +++ b/public/prism/prism-javascript.js @@ -0,0 +1,171 @@ +Prism.languages.javascript = Prism.languages.extend('clike', { +  'class-name': [ +    Prism.languages.clike['class-name'], +    { +      pattern: +        /(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/, +      lookbehind: true, +    }, +  ], +  keyword: [ +    { +      pattern: /((?:^|\})\s*)catch\b/, +      lookbehind: true, +    }, +    { +      pattern: +        /(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/, +      lookbehind: true, +    }, +  ], +  // Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444) +  function: +    /#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/, +  number: { +    pattern: RegExp( +      /(^|[^\w$])/.source + +        '(?:' + +        // constant +        (/NaN|Infinity/.source + +          '|' + +          // binary integer +          /0[bB][01]+(?:_[01]+)*n?/.source + +          '|' + +          // octal integer +          /0[oO][0-7]+(?:_[0-7]+)*n?/.source + +          '|' + +          // hexadecimal integer +          /0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source + +          '|' + +          // decimal bigint +          /\d+(?:_\d+)*n/.source + +          '|' + +          // decimal number (integer or float) but no bigint +          /(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/ +            .source) + +        ')' + +        /(?![\w$])/.source +    ), +    lookbehind: true, +  }, +  operator: +    /--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/, +}); + +Prism.languages.javascript['class-name'][0].pattern = +  /(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/; + +Prism.languages.insertBefore('javascript', 'keyword', { +  regex: { +    // eslint-disable-next-line regexp/no-dupe-characters-character-class +    pattern: +      /((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/, +    lookbehind: true, +    greedy: true, +    inside: { +      'regex-source': { +        pattern: /^(\/)[\s\S]+(?=\/[a-z]*$)/, +        lookbehind: true, +        alias: 'language-regex', +        inside: Prism.languages.regex, +      }, +      'regex-delimiter': /^\/|\/$/, +      'regex-flags': /^[a-z]+$/, +    }, +  }, +  // This must be declared before keyword because we use "function" inside the look-forward +  'function-variable': { +    pattern: +      /#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/, +    alias: 'function', +  }, +  parameter: [ +    { +      pattern: +        /(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/, +      lookbehind: true, +      inside: Prism.languages.javascript, +    }, +    { +      pattern: +        /(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i, +      lookbehind: true, +      inside: Prism.languages.javascript, +    }, +    { +      pattern: +        /(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/, +      lookbehind: true, +      inside: Prism.languages.javascript, +    }, +    { +      pattern: +        /((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/, +      lookbehind: true, +      inside: Prism.languages.javascript, +    }, +  ], +  constant: /\b[A-Z](?:[A-Z_]|\dx?)*\b/, +}); + +Prism.languages.insertBefore('javascript', 'string', { +  hashbang: { +    pattern: /^#!.*/, +    greedy: true, +    alias: 'comment', +  }, +  'template-string': { +    pattern: +      /`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/, +    greedy: true, +    inside: { +      'template-punctuation': { +        pattern: /^`|`$/, +        alias: 'string', +      }, +      interpolation: { +        pattern: +          /((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/, +        lookbehind: true, +        inside: { +          'interpolation-punctuation': { +            pattern: /^\$\{|\}$/, +            alias: 'punctuation', +          }, +          rest: Prism.languages.javascript, +        }, +      }, +      string: /[\s\S]+/, +    }, +  }, +  'string-property': { +    pattern: +      /((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m, +    lookbehind: true, +    greedy: true, +    alias: 'property', +  }, +}); + +Prism.languages.insertBefore('javascript', 'operator', { +  'literal-property': { +    pattern: +      /((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m, +    lookbehind: true, +    alias: 'property', +  }, +}); + +if (Prism.languages.markup) { +  Prism.languages.markup.tag.addInlined('script', 'javascript'); + +  // add attribute support for all DOM events. +  // https://developer.mozilla.org/en-US/docs/Web/Events#Standard_events +  Prism.languages.markup.tag.addAttribute( +    /on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/ +      .source, +    'javascript' +  ); +} + +Prism.languages.js = Prism.languages.javascript; | 
