8000 Added JS Extras (#1743) · PrismJS/prism@bb62860 · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Commit bb62860

Browse files
Added JS Extras (#1743)
This adds JS Extras, a few additional features for the JS language.
1 parent 3560c64 commit bb62860

17 files changed

+434
-5
lines changed

components.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

components.json

+13
Original file line numberDiff line numberDiff line change
@@ -412,6 +412,18 @@
412412
"require": "clike",
413413
"owner": "thesave"
414414
},
415+
"js-extras": {
416+
"title": "JS Extras",
417+
"require": "javascript",
418+
"peerDependencies": [
419+
"actionscript",
420+
"coffeescript",
421+
"flow",
422+
"n4js",
423+
"typescript"
424+
],
425+
"owner": "RunDevelopment"
426+
},
415427
"json": {
416428
"title": "JSON",
417429
"owner": "CupOfTea696"
@@ -669,6 +681,7 @@
669681
"jsx": {
670682
"title": "React JSX",
671683
"require": ["markup", "javascript"],
684+
"peerDependencies": "js-extras",
672685
"owner": "vkbansal"
673686
},
674687
"tsx": {

components/prism-js-extras.js

+104
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
(function (Prism) {
2+
3+
Prism.languages.insertBefore('javascript', 'function-variable', {
4+
'method-variable': {
5+
pattern: RegExp('(\\.\\s*)' + Prism.languages.javascript['function-variable'].pattern.source),
6+
lookbehind: true,
7+
alias: ['function-variable', 'method', 'function', 'property-access']
8+
}
9+
});
10+
11+
Prism.languages.insertBefore('javascript', 'function', {
12+
'method': {
13+
pattern: RegExp('(\\.\\s*)' + Prism.languages.javascript['function'].source),
14+
lookbehind: true,
15+
alias: ['function', 'property-access']
16+
}
17+
});
18+
19+
Prism.languages.insertBefore('javascript', 'constant', {
20+
'known-class-name': [
21+
{
22+
// standard built-ins
23+
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects
24+
pattern: /\b(?:(?:(?:Uint|Int)(?:8|16|32)|Uint8Clamped|Float(?:32|64))?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|(?:Weak)?(?:Set|Map)|WebAssembly)\b/,
25+
alias: 'class-name'
26+
},
27+
{
28+
// errors
29+
pattern: /\b(?:[A-Z]\w*)Error\b/,
30+
alias: 'class-name'
31+
}
32+
]
33+
});
34+
35+
Prism.languages.javascript['keyword'].unshift(
36+
{
37+
pattern: /\b(?:as|default|export|from|import)\b/,
38+
alias: 'module'
39+
},
40+
{
41+
pattern: /\bnull\b/,
42+
alias: ['null', 'nil']
43+
},
44+
{
45+
pattern: /\bundefined\b/,
46+
alias: 'nil'
47+
}
48+
);
49+
50+
Prism.languages.insertBefore('javascript', 'operator', {
51+
'spread': {
52+
pattern: /\.{3}/,
53+
alias: 'operator'
54+
},
55+
'arrow': {
56+
pattern: /=>/,
57+
alias: 'operator'
58+
}
59+
});
60+
61+
Prism.languages.insertBefore('javascript', 'punctuation', {
62+
'property-access': {
63+
pattern: /(\.\s*)[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*/,
64+
lookbehind: true
65+
},
66+
'maybe-class-name': {
67+
pattern: /(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,
68+
lookbehind: true
69+
},
70+
'dom': {
71+
// this contains only a few commonly used DOM variables
72+
pattern: /\b(?:document|location|navigator|performance|(?:local|session)Storage|window)\b/,
73+
alias: 'variable'
74+
},
75+
'console': {
76+
pattern: /\bconsole(?=\s*\.)/,
77+
alias: 'class-name'
78+
}
79+
});
80+
81+
82+
// add 'maybe-class-name' to tokens which might be a class name
83+
var maybeClassNameTokens = ['function', 'function-variable', 'method', 'method-variable', 'property-access'];
84+
85+
for (var i = 0; i < maybeClassNameTokens.length; i++) {
86+
var token = maybeClassNameTokens[i];
87+
var value = Prism.languages.javascript[token];
88+
89+
// convert regex to object
90+
if (Prism.util.type(value) === 'RegExp') {
91+
value = Prism.languages.javascript[token] = {
92+
pattern: value
93+
};
94+
}
95+
96+
// keep in mind that we don't support arrays
97+
98+
var inside = value.inside || {};
99+
value.inside = inside;
100+
101+
inside['maybe-class-name'] = /^[A-Z][\s\S]*/;
102+
}
103+
104+
}(Prism));

components/prism-js-extras.min.js

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

plugins/autoloader/prism-autoloader.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
}
55

66
// The dependencies map is built automatically with gulp
7-
var lang_dependencies = /*languages_placeholder[*/{"javascript":"clike","actionscript":"javascript","arduino":"cpp","aspnet":["markup","csharp"],"bison":"c","c":"clike","csharp":"clike","cpp":"c","coffeescript":"javascript","crystal":"ruby","css-extras":"css","d":"clike","dart":"clike","django":"markup","erb":["ruby","markup-templating"],"fsharp":"clike","flow":"javascript","glsl":"clike","gml":"clike","go":"clike","groovy":"clike","haml":"ruby","handlebars":"markup-templating","haxe":"clike","java":"clike","jolie":"clike","jsonp":"json","json5":"json","kotlin":"clike","less":"css","markdown":"markup","markup-templating":"markup","n4js":"javascript","nginx":"clike","objectivec":"c","opencl":"cpp","parser":"markup","php":["clike","markup-templating"],"php-extras":"php","plsql":"sql","processing":"clike","protobuf":"clike","pug":"javascript","qore":"clike","jsx":["markup","javascript"],"tsx":["jsx","typescript"],"reason":"clike","ruby":"clike","sass":"css","scss":"css","scala":"java","smarty":"markup-templating","soy":"markup-templating","swift":"clike","tap":"yaml","textile":"markup","tt2":["clike","markup-templating"],"twig":"markup","typescript":"javascript","vala":"clike","vbnet":"basic","velocity":"markup","wiki":"markup","xeora":"markup","xquery":"markup"}/*]*/;
7+
var lang_dependencies = /*languages_placeholder[*/{"javascript":"clike","actionscript":"javascript","arduino":"cpp","aspnet":["markup","csharp"],"bison":"c","c":"clike","csharp":"clike","cpp":"c","coffeescript":"javascript","crystal":"ruby","css-extras":"css","d":"clike","dart":"clike","django":"markup","erb":["ruby","markup-templating"],"fsharp":"clike","flow":"javascript","glsl":"clike","gml":"clike","go":"clike","groovy":"clike","haml":"ruby","handlebars":"markup-templating","haxe":"clike","java":"clike","jolie":"clike","js-extras":"javascript","jsonp":"json","json5":"json","kotlin":"clike","less":"css","markdown":"markup","markup-templating":"markup","n4js":"javascript","nginx":"clike","objectivec":"c","opencl":"cpp","parser":"markup","php":["clike","markup-templating"],"php-extras":"php","plsql":"sql","processing":"clike","protobuf":"clike","pug":"javascript","qore":"clike","jsx":["markup","javascript"],"tsx":["jsx","typescript"],"reason":"clike","ruby":"clike","sass":"css","scss":"css","scala":"java","smarty":"markup-templating","soy":"markup-templating","swift":"clike","tap":"yaml","textile":"markup","tt2":["clike","markup-templating"],"twig":"markup","typescript":"javascript","vala":"clike","vbnet":"basic","velocity":"markup","wiki":"markup","xeora":"markup","xquery":"markup"}/*]*/;
88

99
var lang_data = {};
1010

plugins/autoloader/prism-autoloader.min.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

plugins/show-language/prism-show-language.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ if (!Prism.plugins.toolbar) {
1111
}
1212

1313
// The languages map is built automatically with gulp
14-
var Languages = /*languages_placeholder[*/{"html":"HTML","xml":"XML","svg":"SVG","mathml":"MathML","css":"CSS","clike":"C-like","js":"JavaScript","abap":"ABAP","abnf":"Augmented Backus–Naur form","apacheconf":"Apache Configuration","apl":"APL","arff":"ARFF","asciidoc":"AsciiDoc","adoc":"AsciiDoc","asm6502":"6502 Assembly","aspnet":"ASP.NET (C#)","autohotkey":"AutoHotkey","autoit":"AutoIt","shell":"Bash","basic":"BASIC","bnf":"Backus–Naur form","rbfn":"Routing Backus–Naur form","csharp":"C#","dotnet":"C#","cpp":"C++","cil":"CIL","csp":"Content-Security-Policy","css-extras":"CSS Extras","django":"Django/Jinja2","jinja2":"Django/Jinja2","dockerfile":"Docker","ebnf":"Extended Backus–Naur form","erb":"ERB","fsharp":"F#","gcode":"G-code","gedcom":"GEDCOM","glsl":"GLSL","gml":"GameMaker Language","gamemakerlanguage":"GameMaker Language","graphql":"GraphQL","hcl":"HCL","http":"HTTP","hpkp":"HTTP Public-Key-Pins","hsts":"HTTP Strict-Transport-Security","ichigojam":"IchigoJam","inform7":"Inform 7","javastacktrace":"Java stack trace","json":"JSON","jsonp":"JSONP","json5":"JSON5","latex":"LaTeX","emacs":"Lisp","elisp":"Lisp","emacs-lisp":"Lisp","lolcode":"LOLCODE","markup-templating":"Markup templating","matlab":"MATLAB","mel":"MEL","n1ql":"N1QL","n4js":"N4JS","n4jsd":"N4JS","nand2tetris-hdl":"Nand To Tetris HDL","nasm":"NASM","nginx":"nginx","nsis":"NSIS","objectivec":"Objective-C","ocaml":"OCaml","opencl":"OpenCL","parigp":"PARI/GP","objectpascal":"Object Pascal","php":"PHP","php-extras":"PHP Extras","plsql":"PL/SQL","powershell":"PowerShell","properties":".properties","protobuf":"Protocol Buffers","q":"Q (kdb+ database)","jsx":"React JSX","tsx":"React TSX","renpy":"Ren'py","rest":"reST (reStructuredText)","sas":"SAS","sass":"Sass (Sass)","scss":"Sass (Scss)","sql":"SQL","soy":"Soy (Closure Template)","tap":"TAP","toml":"TOML","tt2":"Template Toolkit 2","ts":"TypeScript","vbnet":"VB.Net","vhdl":"VHDL","vim":"vim","visual-basic":"Visual Basic","vb":"Visual Basic","wasm":"WebAssembly","wiki":"Wiki markup","xeoracube":"XeoraCube","xojo":"Xojo (REALbasic)","xquery":"XQuery","yaml":"YAML"}/*]*/;
14+
var Languages = /*languages_placeholder[*/{"html":"HTML","xml":"XML","svg":"SVG","mathml":"MathML","css":"CSS","clike":"C-like","js":"JavaScript","abap":"ABAP","abnf":"Augmented Backus–Naur form","apacheconf":"Apache Configuration","apl":"APL","arff":"ARFF","asciidoc":"AsciiDoc","adoc":"AsciiDoc","asm6502":"6502 Assembly","aspnet":"ASP.NET (C#)","autohotkey":"AutoHotkey","autoit":"AutoIt","shell":"Bash","basic":"BASIC","bnf":"Backus–Naur form","rbfn":"Routing Backus–Naur form","csharp":"C#","dotnet":"C#","cpp":"C++","cil":"CIL","csp":"Content-Security-Policy","css-extras":"CSS Extras","django":"Django/Jinja2","jinja2":"Django/Jinja2","dockerfile":"Docker","ebnf":"Extended Backus–Naur form","erb":"ERB","fsharp":"F#","gcode":"G-code","gedcom":"GEDCOM","glsl":"GLSL","gml":"GameMaker Language","gamemakerlanguage":"GameMaker Language","graphql":"GraphQL","hcl":"HCL","http":"HTTP","hpkp":"HTTP Public-Key-Pins","hsts":"HTTP Strict-Transport-Security","ichigojam":"IchigoJam","inform7":"Inform 7","javastacktrace":"Java stack trace","js-extras":"JS Extras","json":"JSON","jsonp":"JSONP","json5":"JSON5","latex":"LaTeX","emacs":"Lisp","elisp":"Lisp","emacs-lisp":"Lisp","lolcode":"LOLCODE","markup-templating":"Markup templating","matlab":"MATLAB","mel":"MEL","n1ql":"N1QL","n4js":"N4JS","n4jsd":"N4JS","nand2tetris-hdl":"Nand To Tetris HDL","nasm":"NASM","nginx":"nginx","nsis":"NSIS","objectivec":"Objective-C","ocaml":"OCaml","opencl":"OpenCL","parigp":"PARI/GP","objectpascal":"Object Pascal","php":"PHP","php-extras":"PHP Extras","plsql":"PL/SQL","powershell":"PowerShell","properties":".properties","protobuf":"Protocol Buffers","q":"Q (kdb+ database)","jsx":"React JSX","tsx":"React TSX","renpy":"Ren'py","rest":"reST (reStructuredText)","sas":"SAS","sass":"Sass (Sass)","scss":"Sass (Scss)","sql":"SQL","soy":"Soy (Closure Template)","tap":"TAP","toml":"TOML","tt2":"Template Toolkit 2","ts":"TypeScript","vbnet":"VB.Net","vhdl":"VHDL","vim":"vim","visual-basic":"Visual Basic","vb":"Visual Basic","wasm":"WebAssembly","wiki":"Wiki markup","xeoracube":"XeoraCube","xojo":"Xojo (REALbasic)","xquery":"XQuery","yaml":"YAML"}/*]*/;
1515

1616
Prism.plugins.toolbar.registerButton('show-language', function(env) {
1717
var pre = env.element.parentNode;

0 commit comments

Comments
 (0)
0