From a98b5ea6fe8e8cc98a55e0fd793e6e8660ea31c1 Mon Sep 17 00:00:00 2001 From: Armand Philippot Date: Thu, 30 Dec 2021 19:47:21 +0100 Subject: chore: add prismjs for syntax highlighting --- public/prism/prism-aspnet.js | 60 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 public/prism/prism-aspnet.js (limited to 'public/prism/prism-aspnet.js') diff --git a/public/prism/prism-aspnet.js b/public/prism/prism-aspnet.js new file mode 100644 index 0000000..e051afb --- /dev/null +++ b/public/prism/prism-aspnet.js @@ -0,0 +1,60 @@ +Prism.languages.aspnet = Prism.languages.extend('markup', { + 'page-directive': { + pattern: /<%\s*@.*%>/, + alias: 'tag', + inside: { + 'page-directive': { + pattern: + /<%\s*@\s*(?:Assembly|Control|Implements|Import|Master(?:Type)?|OutputCache|Page|PreviousPageType|Reference|Register)?|%>/i, + alias: 'tag', + }, + rest: Prism.languages.markup.tag.inside, + }, + }, + directive: { + pattern: /<%.*%>/, + alias: 'tag', + inside: { + directive: { + pattern: /<%\s*?[$=%#:]{0,2}|%>/, + alias: 'tag', + }, + rest: Prism.languages.csharp, + }, + }, +}); +// Regexp copied from prism-markup, with a negative look-ahead added +Prism.languages.aspnet.tag.pattern = + /<(?!%)\/?[^\s>\/]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/; + +// match directives of attribute value foo="<% Bar %>" +Prism.languages.insertBefore( + 'inside', + 'punctuation', + { + directive: Prism.languages.aspnet['directive'], + }, + Prism.languages.aspnet.tag.inside['attr-value'] +); + +Prism.languages.insertBefore('aspnet', 'comment', { + 'asp-comment': { + pattern: /<%--[\s\S]*?--%>/, + alias: ['asp', 'comment'], + }, +}); + +// script runat="server" contains csharp, not javascript +Prism.languages.insertBefore( + 'aspnet', + Prism.languages.javascript ? 'script' : 'tag', + { + 'asp-script': { + pattern: + /(]*>)[\s\S]*?(?=<\/script>)/i, + lookbehind: true, + alias: ['asp', 'script'], + inside: Prism.languages.csharp || {}, + }, + } +); -- cgit v1.2.3