UNPKG

2.04 kBJavaScriptView Raw
1Prism.languages.aspnet = Prism.languages.extend('markup', {
2 'page-directive tag': {
3 pattern: /<%\s*@.*%>/i,
4 inside: {
5 'page-directive tag': /<%\s*@\s*(?:Assembly|Control|Implements|Import|Master(?:Type)?|OutputCache|Page|PreviousPageType|Reference|Register)?|%>/i,
6 rest: Prism.languages.markup.tag.inside
7 }
8 },
9 'directive tag': {
10 pattern: /<%.*%>/i,
11 inside: {
12 'directive tag': /<%\s*?[$=%#:]{0,2}|%>/i,
13 rest: Prism.languages.csharp
14 }
15 }
16});
17// Regexp copied from prism-markup, with a negative look-ahead added
18Prism.languages.aspnet.tag.pattern = /<(?!%)\/?[^\s>\/]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i;
19
20// match directives of attribute value foo="<% Bar %>"
21Prism.languages.insertBefore('inside', 'punctuation', {
22 'directive tag': Prism.languages.aspnet['directive tag']
23}, Prism.languages.aspnet.tag.inside["attr-value"]);
24
25Prism.languages.insertBefore('aspnet', 'comment', {
26 'asp comment': /<%--[\w\W]*?--%>/
27});
28
29// script runat="server" contains csharp, not javascript
30Prism.languages.insertBefore('aspnet', Prism.languages.javascript ? 'script' : 'tag', {
31 'asp script': {
32 pattern: /<script(?=.*runat=['"]?server['"]?)[\w\W]*?>[\w\W]*?<\/script>/i,
33 inside: {
34 tag: {
35 pattern: /<\/?script\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|\w+))?\s*)*\/?>/i,
36 inside: Prism.languages.aspnet.tag.inside
37 },
38 rest: Prism.languages.csharp || {}
39 }
40 }
41});
42
43// Hacks to fix eager tag matching finishing too early: <script src="<% Foo.Bar %>"> => <script src="<% Foo.Bar %>
44if ( Prism.languages.aspnet.style ) {
45 Prism.languages.aspnet.style.inside.tag.pattern = /<\/?style\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|\w+))?\s*)*\/?>/i;
46 Prism.languages.aspnet.style.inside.tag.inside = Prism.languages.aspnet.tag.inside;
47}
48if ( Prism.languages.aspnet.script ) {
49 Prism.languages.aspnet.script.inside.tag.pattern = Prism.languages.aspnet['asp script'].inside.tag.pattern;
50 Prism.languages.aspnet.script.inside.tag.inside = Prism.languages.aspnet.tag.inside;
51}
\No newline at end of file