A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/PrismJS/prism/commit/5f9c078a10237699aa0a6268903ecdae10bd7f4c below:

Make ERB, Handlebars, PHP and Smarty highlight properly in NodeJS (#1… · PrismJS/prism@5f9c078 · GitHub

File tree Expand file treeCollapse file tree 32 files changed

+546

-361

lines changed

Filter options

Expand file treeCollapse file tree 32 files changed

+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