+546
-361
lines changedFilter options
+546
-361
lines changed Original file line number Diff line number Diff line change
@@ -230,7 +230,7 @@
230
230
},
231
231
"erb": {
232
232
"title": "ERB",
233
-
"require": ["markup", "ruby"],
233
+
"require": ["ruby", "markup-templating"],
234
234
"owner": "Golmote"
235
235
},
236
236
"erlang": {
@@ -285,7 +285,7 @@
285
285
},
286
286
"handlebars": {
287
287
"title": "Handlebars",
288
-
"require": "markup",
288
+
"require": "markup-templating",
289
289
"owner": "Golmote"
290
290
},
291
291
"haskell": {
@@ -394,6 +394,11 @@
394
394
"require": "markup",
395
395
"owner": "Golmote"
396
396
},
397
+
"markup-templating": {
398
+
"title": "Markup templating",
399
+
"require": "markup",
400
+
"owner": "Golmote"
401
+
},
397
402
"matlab": {
398
403
"title": "MATLAB",
399
404
"owner": "Golmote"
@@ -474,7 +479,7 @@
474
479
},
475
480
"php": {
476
481
"title": "PHP",
477
-
"require": "clike",
482
+
"require": ["clike", "markup-templating"],
478
483
"owner": "milesj"
479
484
},
480
485
"php-extras": {
@@ -607,7 +612,7 @@
607
612
},
608
613
"smarty": {
609
614
"title": "Smarty",
610
-
"require": "markup",
615
+
"require": "markup-templating",
611
616
"owner": "Golmote"
612
617
},
613
618
"sql": {
Original file line number Diff line number Diff line change
@@ -273,13 +273,14 @@ var _ = _self.Prism = {
273
273
274
274
highlight: function (text, grammar, language) {
275
275
var env = {
276
-
text: text,
276
+
code: text,
277
277
grammar: grammar,
278
278
language: language
279
279
};
280
-
env.tokens = _.tokenize(text, grammar);
280
+
_.hooks.run('before-tokenize', env);
281
+
env.tokens = _.tokenize(env.code, env.grammar);
281
282
_.hooks.run('after-tokenize', env);
282
-
return Token.stringify(_.util.encode(env.tokens), language);
283
+
return Token.stringify(_.util.encode(env.tokens), env.language);
283
284
},
284
285
285
286
matchGrammar: function (text, strarr, grammar, index, startPos, oneshot, target) {
Original file line number Diff line number Diff line change
@@ -1,67 +1,20 @@
1
1
(function (Prism) {
2
2
3
-
var erb_pattern = /<%=?[\s\S]+?%>/g;
4
-
5
-
Prism.languages.erb = Prism.languages.extend('markup', {
6
-
'erb': {
7
-
pattern: erb_pattern,
8
-
inside: {
9
-
'delimiter': {
10
-
pattern: /^<%=?|%>$/,
11
-
alias: 'punctuation'
12
-
},
13
-
rest: Prism.languages.ruby
14
-
}
15
-
}
16
-
});
17
-
18
-
// Tokenize all inline ERB expressions that are wrapped in <%= %>
19
-
// This allows for easy ERB + markup highlighting
20
-
Prism.hooks.add('before-highlight', function(env) {
21
-
if (env.language !== 'erb') {
22
-
return;
3
+
Prism.languages.erb = Prism.languages.extend('ruby', {});
4
+
Prism.languages.insertBefore('erb', 'comment', {
5
+
'delimiter': {
6
+
pattern: /^<%=?|%>$/,
7
+
alias: 'punctuation'
23
8
}
24
-
25
-
env.tokenStack = [];
26
-
27
-
env.backupCode = env.code;
28
-
env.code = env.code.replace(erb_pattern, function(match) {
29
-
var i = env.tokenStack.length;
30
-
// Check for existing strings
31
-
while (env.backupCode.indexOf('___ERB' + i + '___') !== -1)
32
-
++i;
33
-
34
-
// Create a sparse array
35
-
env.tokenStack[i] = match;
36
-
37
-
return '___ERB' + i + '___';
38
-
});
39
9
});
40
10
41
-
// Restore env.code for other plugins (e.g. line-numbers)
42
-
Prism.hooks.add('before-insert', function(env) {
43
-
if (env.language === 'erb') {
44
-
env.code = env.backupCode;
45
-
delete env.backupCode;
46
-
}
11
+
Prism.hooks.add('before-tokenize', function(env) {
12
+
var erbPattern = /<%=?[\s\S]+?%>/g;
13
+
Prism.languages['markup-templating'].buildPlaceholders(env, 'erb', erbPattern);
47
14
});
48
15
49
-
// Re-insert the tokens after highlighting
50
-
// and highlight them with defined grammar
51
-
Prism.hooks.add('after-highlight', function(env) {
52
-
if (env.language !== 'erb') {
53
-
return;
54
-
}
55
-
56
-
for (var i = 0, keys = Object.keys(env.tokenStack); i < keys.length; ++i) {
57
-
var k = keys[i];
58
-
var t = env.tokenStack[k];
59
-
60
-
// The replace prevents $$, $&, $`, $', $n, $nn from being interpreted as special patterns
61
-
env.highlightedCode = env.highlightedCode.replace('___ERB' + k + '___', Prism.highlight(t, env.grammar, 'erb').replace(/\$/g, '$$$$'));
62
-
}
63
-
64
-
env.element.innerHTML = env.highlightedCode;
16
+
Prism.hooks.add('after-tokenize', function(env) {
17
+
Prism.languages['markup-templating'].tokenizePlaceholders(env, 'erb');
65
18
});
66
19
67
20
}(Prism));
You can’t perform that action at this time.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4