aboutsummaryrefslogtreecommitdiffstats
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);