Skip to content

Commit 694a81b

Browse files
dgRunDevelopment
authored andcommitted
Added support for Latte & NEON (#2140)
- Added support for templating system Latte https://latte.nette.org - Added support for NEON https://ne-on.org
1 parent 401d4b0 commit 694a81b

25 files changed

+544
-3
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

+9
Original file line numberDiff line numberDiff line change
@@ -560,6 +560,11 @@
560560
},
561561
"owner": "japborst"
562562
},
563+
"latte": {
564+
"title": "Latte",
565+
"require": ["clike", "markup-templating", "php"],
566+
"owner": "nette"
567+
},
563568
"less": {
564569
"title": "Less",
565570
"require": "css",
@@ -650,6 +655,10 @@
650655
"title": "NASM",
651656
"owner": "rbmj"
652657
},
658+
"neon": {
659+
"title": "NEON",
660+
"owner": "nette"
661+
},
653662
"nginx": {
654663
"title": "nginx",
655664
"owner": "westonganger",

components/prism-latte.js

+69
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
(function (Prism) {
2+
Prism.languages.latte = {
3+
'comment': /^\{\*[\s\S]*/,
4+
'ld': {
5+
pattern: /^\{(?:[=_]|\/?(?!\d|\w+\()\w+|)/,
6+
inside: {
7+
'punctuation': /^\{\/?/,
8+
'tag': {
9+
pattern: /.+/,
10+
alias: 'important'
11+
}
12+
}
13+
},
14+
'rd': {
15+
pattern: /\}$/,
16+
inside: {
17+
'punctuation': /.+/
18+
}
19+
},
20+
'php': {
21+
pattern: /\S(?:[\s\S]*\S)?/,
22+
alias: 'language-php',
23+
inside: Prism.languages.php
24+
}
25+
};
26+
27+
var markupLatte = Prism.languages.extend('markup', {});
28+
Prism.languages.insertBefore('inside', 'attr-value', {
29+
'n-attr': {
30+
pattern: /n:[\w-]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+))?/,
31+
inside: {
32+
'attr-name': {
33+
pattern: /^[^\s=]+/,
34+
alias: 'important'
35+
},
36+
'attr-value': {
37+
pattern: /=[\s\S]+/,
38+
inside: {
39+
'punctuation': [
40+
/^=/,
41+
{
42+
pattern: /^(\s*)["']|["']$/,
43+
lookbehind: true
44+
}
45+
],
46+
'php': {
47+
pattern: /\S(?:[\s\S]*\S)?/,
48+
inside: Prism.languages.php
49+
}
50+
}
51+
},
52+
}
53+
},
54+
}, markupLatte.tag);
55+
56+
Prism.hooks.add('before-tokenize', function(env) {
57+
if (env.language !== 'latte') {
58+
return;
59+
}
60+
var lattePattern = /\{\*[\s\S]*?\*\}|\{[^'"\s{}*](?:[^"'/{}]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|\/\*[\s\S]*?\*\/)*?\}/g;
61+
Prism.languages['markup-templating'].buildPlaceholders(env, 'latte', lattePattern);
62+
env.grammar = markupLatte;
63+
});
64+
65+
Prism.hooks.add('after-tokenize', function(env) {
66+
Prism.languages['markup-templating'].tokenizePlaceholders(env, 'latte');
67+
});
68+
69+
}(Prism));

components/prism-latte.min.js

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

components/prism-neon.js

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
Prism.languages.neon = {
2+
'comment': {
3+
pattern: /#.*/,
4+
greedy: true
5+
},
6+
'datetime': {
7+
pattern: /(^|[[{(=:,\s])\d\d\d\d-\d\d?-\d\d?(?:(?:[Tt]| +)\d\d?:\d\d:\d\d(?:\.\d*)? *(?:Z|[-+]\d\d?(?::?\d\d)?)?)?(?=$|[\]}),\s])/,
8+
lookbehind: true,
9+
alias: 'number'
10+
},
11+
'key': {
12+
pattern: /(^|[[{(,\s])[^,:=[\]{}()'"\s]+(?=\s*:(?:$|[\]}),\s])|\s*=)/,
13+
lookbehind: true,
14+
alias: 'atrule'
15+
},
16+
'number': {
17+
pattern: /(^|[[{(=:,\s])[+-]?(?:0x[\da-fA-F]+|0o[0-7]+|0b[01]+|(?:\d+\.?\d*|\.?\d+)(?:[eE][+-]?\d+)?)(?=$|[\]}),:=\s])/,
18+
lookbehind: true
19+
},
20+
'boolean': {
21+
pattern: /(^|[[{(=:,\s])(?:true|false|yes|no)(?=$|[\]}),:=\s])/i,
22+
lookbehind: true
23+
},
24+
'null': {
25+
pattern: /(^|[[{(=:,\s])(?:null)(?=$|[\]}),:=\s])/i,
26+
lookbehind: true,
27+
alias: 'keyword'
28+
},
29+
'string': {
30+
pattern: /(^|[[{(=:,\s])(?:('''|""")\r?\n(?:(?:[^\r\n]|\r?\n(?![\t ]*\2))*\r?\n)?[\t ]*\2|'[^'\r\n]*'|"(?:\\.|[^"\r\n])*")/,
31+
lookbehind: true,
32+
greedy: true
33+
},
34+
'literal': {
35+
pattern: /(^|[[{(=:,\s])(?:[^#"\',:=[\]{}()\s`-]|[:-][^"\',=[\]{}()\s])(?:[^,:=\]})(\s]+|:(?![\s,\]})]|$)|[ \t]+[^#,:=\]})(\s])*/,
36+
lookbehind: true,
37+
alias: 'string',
38+
},
39+
'punctuation': /[,:=[\]{}()-]/,
40+
};
41+

components/prism-neon.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

+5
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,11 @@
6161
"jsonp": "json",
6262
"json5": "json",
6363
"kotlin": "clike",
64+
"latte": [
65+
"clike",
66+
"markup-templating",
67+
"php"
68+
],
6469
"less": "css",
6570
"lilypond": "scheme",
6671
"markdown": "markup",

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
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@
102102
"n4jsd": "N4JS",
103103
"nand2tetris-hdl": "Nand To Tetris HDL",
104104
"nasm": "NASM",
105+
"neon": "NEON",
105106
"nginx": "nginx",
106107
"nsis": "NSIS",
107108
"objectivec": "Objective-C",

0 commit comments

Comments
 (0)