summaryrefslogtreecommitdiffstats
path: root/public/prism/prism-javadoc.js
diff options
context:
space:
mode:
authorArmand Philippot <git@armandphilippot.com>2021-12-30 19:47:21 +0100
committerArmand Philippot <git@armandphilippot.com>2021-12-30 19:47:21 +0100
commita98b5ea6fe8e8cc98a55e0fd793e6e8660ea31c1 (patch)
tree542810ab5aef99150db228bb54fd58303dcb31c7 /public/prism/prism-javadoc.js
parentab355897a12b7bda1089a44de326d41455a0f7a3 (diff)
chore: add prismjs for syntax highlighting
Diffstat (limited to 'public/prism/prism-javadoc.js')
-rw-r--r--public/prism/prism-javadoc.js93
1 files changed, 93 insertions, 0 deletions
diff --git a/public/prism/prism-javadoc.js b/public/prism/prism-javadoc.js
new file mode 100644
index 0000000..f43025c
--- /dev/null
+++ b/public/prism/prism-javadoc.js
@@ -0,0 +1,93 @@
+(function (Prism) {
+ var codeLinePattern = /(^(?:[\t ]*(?:\*\s*)*))[^*\s].*$/m;
+
+ var memberReference = /#\s*\w+(?:\s*\([^()]*\))?/.source;
+ var reference =
+ /(?:\b[a-zA-Z]\w+\s*\.\s*)*\b[A-Z]\w*(?:\s*<mem>)?|<mem>/.source.replace(
+ /<mem>/g,
+ function () {
+ return memberReference;
+ }
+ );
+
+ Prism.languages.javadoc = Prism.languages.extend('javadoclike', {});
+ Prism.languages.insertBefore('javadoc', 'keyword', {
+ reference: {
+ pattern: RegExp(
+ /(@(?:exception|link|linkplain|see|throws|value)\s+(?:\*\s*)?)/.source +
+ '(?:' +
+ reference +
+ ')'
+ ),
+ lookbehind: true,
+ inside: {
+ function: {
+ pattern: /(#\s*)\w+(?=\s*\()/,
+ lookbehind: true,
+ },
+ field: {
+ pattern: /(#\s*)\w+/,
+ lookbehind: true,
+ },
+ namespace: {
+ pattern: /\b(?:[a-z]\w*\s*\.\s*)+/,
+ inside: {
+ punctuation: /\./,
+ },
+ },
+ 'class-name': /\b[A-Z]\w*/,
+ keyword: Prism.languages.java.keyword,
+ punctuation: /[#()[\],.]/,
+ },
+ },
+ 'class-name': {
+ // @param <T> the first generic type parameter
+ pattern: /(@param\s+)<[A-Z]\w*>/,
+ lookbehind: true,
+ inside: {
+ punctuation: /[.<>]/,
+ },
+ },
+ 'code-section': [
+ {
+ pattern:
+ /(\{@code\s+(?!\s))(?:[^\s{}]|\s+(?![\s}])|\{(?:[^{}]|\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})*\})*\})+(?=\s*\})/,
+ lookbehind: true,
+ inside: {
+ code: {
+ // there can't be any HTML inside of {@code} tags
+ pattern: codeLinePattern,
+ lookbehind: true,
+ inside: Prism.languages.java,
+ alias: 'language-java',
+ },
+ },
+ },
+ {
+ pattern: /(<(code|pre|tt)>(?!<code>)\s*)\S(?:\S|\s+\S)*?(?=\s*<\/\2>)/,
+ lookbehind: true,
+ inside: {
+ line: {
+ pattern: codeLinePattern,
+ lookbehind: true,
+ inside: {
+ // highlight HTML tags and entities
+ tag: Prism.languages.markup.tag,
+ entity: Prism.languages.markup.entity,
+ code: {
+ // everything else is Java code
+ pattern: /.+/,
+ inside: Prism.languages.java,
+ alias: 'language-java',
+ },
+ },
+ },
+ },
+ },
+ ],
+ tag: Prism.languages.markup.tag,
+ entity: Prism.languages.markup.entity,
+ });
+
+ Prism.languages.javadoclike.addSupport('java', Prism.languages.javadoc);
+})(Prism);