Improved token names Optional quotes around runat="server". Group capturing doesn't seem to work in lookaheads, so mismatched quotes will pass :(
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
diff --git a/components/prism-aspnet.js b/components/prism-aspnet.js
index b9749bb..0c65159 100644
--- a/components/prism-aspnet.js
+++ b/components/prism-aspnet.js
@@ -1,24 +1,23 @@
Prism.languages.aspnet = Prism.languages.extend('markup', {
- 'asp tag': {
+ 'page-directive tag': {
pattern: /(<|<)%\s*@.*%>/gi,
inside: {
- 'page-directive': /<%\s*@\s*(?:Assembly|Control|Implements|Import|Master|MasterType|OutputCache|Page|PreviousPageType|Reference|Register)?|%>/ig,
+ 'tag page-directive': /<%\s*@\s*(?:Assembly|Control|Implements|Import|Master|MasterType|OutputCache|Page|PreviousPageType|Reference|Register)?|%>/ig,
rest: Prism.languages.markup.tag.inside
}
},
- 'asp directive': {
+ 'directive tag': {
pattern: /(<|<)%.*%>/gi,
inside: {
- 'directive-tag': /(<|<)%\s*?[$=%#:]{0,2}|%>/gi,
-
-
+ 'directive tag': /(<|<)%\s*?[$=%#:]{0,2}|%>/gi,
rest: Prism.languages.csharp
}
}
});
+
/* match inline code inside of attribute value */
Prism.languages.insertBefore('inside', 'punctuation', {
- 'asp directive': Prism.languages.aspnet.directive
+ 'directive tag': Prism.languages.aspnet['directive tag']
}, Prism.languages.aspnet.tag.inside["attr-value"]);
Prism.languages.insertBefore('aspnet', 'comment', {
@@ -28,11 +27,11 @@ Prism.languages.insertBefore('aspnet', 'comment', {
/* runat="server" contains csharp, not javascript */
Prism.languages.insertBefore('aspnet', Prism.languages.javascript ? 'script' : 'tag', {
'asp script': {
- pattern: /(<|<)script(?=.*runat=['"]server['"])[\w\W]*?(>|>)[\w\W]*?(<|<)\/script(>|>)/ig,
+ pattern: /(<|<)script(?=.*runat=['"]?server['"]?)[\w\W]*?(>|>)[\w\W]*?(<|<)\/script(>|>)/ig,
inside: {
- 'tag': {
- pattern: /(<|<)script[\w\W]*?(>|>)|(<|<)\/script(>|>)/ig,
- inside: Prism.languages.markup.tag.inside
+ tag: {
+ pattern: /<\/?script\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|\w+))?\s*)*\/?>/gi,
+ inside: Prism.languages.aspnet.tag.inside
},
rest: Prism.languages.csharp
}
@@ -43,5 +42,5 @@ Prism.languages.insertBefore('aspnet', Prism.languages.javascript ? 'script' : '
Prism.languages.aspnet.style.inside.tag.pattern = /<\/?style\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|\w+))?\s*)*\/?>/gi;
Prism.languages.aspnet.style.inside.tag.inside = Prism.languages.aspnet.tag.inside;
-Prism.languages.aspnet.script.inside.tag.pattern = /<\/?script\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|\w+))?\s*)*\/?>/gi;
+Prism.languages.aspnet.script.inside.tag.pattern = Prism.languages.aspnet['asp script'].inside.tag.pattern
Prism.languages.aspnet.script.inside.tag.inside = Prism.languages.aspnet.tag.inside;
\ No newline at end of file