summaryrefslogtreecommitdiffstats
path: root/public/prism/prism-erb.js
blob: 9b406dc7cb081f28045f8ab171c47c8d6e30d4b9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
(function (Prism) {
  Prism.languages.erb = {
    delimiter: {
      pattern: /^(\s*)<%=?|%>(?=\s*$)/,
      lookbehind: true,
      alias: 'punctuation',
    },
    ruby: {
      pattern: /\s*\S[\s\S]*/,
      alias: 'language-ruby',
      inside: Prism.languages.ruby,
    },
  };

  Prism.hooks.add('before-tokenize', function (env) {
    var erbPattern =
      /<%=?(?:[^\r\n]|[\r\n](?!=begin)|[\r\n]=begin\s(?:[^\r\n]|[\r\n](?!=end))*[\r\n]=end)+?%>/g;
    Prism.languages['markup-templating'].buildPlaceholders(
      env,
      'erb',
      erbPattern
    );
  });

  Prism.hooks.add('after-tokenize', function (env) {
    Prism.languages['markup-templating'].tokenizePlaceholders(env, 'erb');
  });
})(Prism);
="nx">a.code.indexOf((n = v(r, t))); ) ++t; return (c[t] = e), n; })), (a.grammar = h.languages.markup); } }, }, tokenizePlaceholders: { value: function (p, k) { if (p.language === k && p.tokenStack) { p.grammar = h.languages[k]; var m = 0, d = Object.keys(p.tokenStack); !(function e(n) { for (var t = 0; t < n.length && !(m >= d.length); t++) { var a = n[t]; if ( 'string' == typeof a || (a.content && 'string' == typeof a.content) ) { var r = d[m], o = p.tokenStack[r], c = 'string' == typeof a ? a : a.content, i = v(k, r), u = c.indexOf(i); if (-1 < u) { ++m; var g = c.substring(0, u), l = new h.Token( k, h.tokenize(o, p.grammar), 'language-' + k, o ), s = c.substring(u + i.length), f = []; g && f.push.apply(f, e([g])), f.push(l), s && f.push.apply(f, e([s])), 'string' == typeof a ? n.splice.apply(n, [t, 1].concat(f)) : (a.content = f); } } else a.content && e(a.content); } return n; })(p.tokens); } }, }, }); })(Prism);