[d24f17c] | 1 | 'use strict'
|
---|
| 2 | var refractorJava = require('./java.js')
|
---|
| 3 | var refractorJavadoclike = require('./javadoclike.js')
|
---|
| 4 | module.exports = javadoc
|
---|
| 5 | javadoc.displayName = 'javadoc'
|
---|
| 6 | javadoc.aliases = []
|
---|
| 7 | function javadoc(Prism) {
|
---|
| 8 | Prism.register(refractorJava)
|
---|
| 9 | Prism.register(refractorJavadoclike)
|
---|
| 10 | ;(function (Prism) {
|
---|
| 11 | var codeLinePattern = /(^(?:[\t ]*(?:\*\s*)*))[^*\s].*$/m
|
---|
| 12 | var memberReference = /#\s*\w+(?:\s*\([^()]*\))?/.source
|
---|
| 13 | var reference =
|
---|
| 14 | /(?:\b[a-zA-Z]\w+\s*\.\s*)*\b[A-Z]\w*(?:\s*<mem>)?|<mem>/.source.replace(
|
---|
| 15 | /<mem>/g,
|
---|
| 16 | function () {
|
---|
| 17 | return memberReference
|
---|
| 18 | }
|
---|
| 19 | )
|
---|
| 20 | Prism.languages.javadoc = Prism.languages.extend('javadoclike', {})
|
---|
| 21 | Prism.languages.insertBefore('javadoc', 'keyword', {
|
---|
| 22 | reference: {
|
---|
| 23 | pattern: RegExp(
|
---|
| 24 | /(@(?:exception|link|linkplain|see|throws|value)\s+(?:\*\s*)?)/
|
---|
| 25 | .source +
|
---|
| 26 | '(?:' +
|
---|
| 27 | reference +
|
---|
| 28 | ')'
|
---|
| 29 | ),
|
---|
| 30 | lookbehind: true,
|
---|
| 31 | inside: {
|
---|
| 32 | function: {
|
---|
| 33 | pattern: /(#\s*)\w+(?=\s*\()/,
|
---|
| 34 | lookbehind: true
|
---|
| 35 | },
|
---|
| 36 | field: {
|
---|
| 37 | pattern: /(#\s*)\w+/,
|
---|
| 38 | lookbehind: true
|
---|
| 39 | },
|
---|
| 40 | namespace: {
|
---|
| 41 | pattern: /\b(?:[a-z]\w*\s*\.\s*)+/,
|
---|
| 42 | inside: {
|
---|
| 43 | punctuation: /\./
|
---|
| 44 | }
|
---|
| 45 | },
|
---|
| 46 | 'class-name': /\b[A-Z]\w*/,
|
---|
| 47 | keyword: Prism.languages.java.keyword,
|
---|
| 48 | punctuation: /[#()[\],.]/
|
---|
| 49 | }
|
---|
| 50 | },
|
---|
| 51 | 'class-name': {
|
---|
| 52 | // @param <T> the first generic type parameter
|
---|
| 53 | pattern: /(@param\s+)<[A-Z]\w*>/,
|
---|
| 54 | lookbehind: true,
|
---|
| 55 | inside: {
|
---|
| 56 | punctuation: /[.<>]/
|
---|
| 57 | }
|
---|
| 58 | },
|
---|
| 59 | 'code-section': [
|
---|
| 60 | {
|
---|
| 61 | pattern:
|
---|
| 62 | /(\{@code\s+(?!\s))(?:[^\s{}]|\s+(?![\s}])|\{(?:[^{}]|\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})*\})*\})+(?=\s*\})/,
|
---|
| 63 | lookbehind: true,
|
---|
| 64 | inside: {
|
---|
| 65 | code: {
|
---|
| 66 | // there can't be any HTML inside of {@code} tags
|
---|
| 67 | pattern: codeLinePattern,
|
---|
| 68 | lookbehind: true,
|
---|
| 69 | inside: Prism.languages.java,
|
---|
| 70 | alias: 'language-java'
|
---|
| 71 | }
|
---|
| 72 | }
|
---|
| 73 | },
|
---|
| 74 | {
|
---|
| 75 | pattern:
|
---|
| 76 | /(<(code|pre|tt)>(?!<code>)\s*)\S(?:\S|\s+\S)*?(?=\s*<\/\2>)/,
|
---|
| 77 | lookbehind: true,
|
---|
| 78 | inside: {
|
---|
| 79 | line: {
|
---|
| 80 | pattern: codeLinePattern,
|
---|
| 81 | lookbehind: true,
|
---|
| 82 | inside: {
|
---|
| 83 | // highlight HTML tags and entities
|
---|
| 84 | tag: Prism.languages.markup.tag,
|
---|
| 85 | entity: Prism.languages.markup.entity,
|
---|
| 86 | code: {
|
---|
| 87 | // everything else is Java code
|
---|
| 88 | pattern: /.+/,
|
---|
| 89 | inside: Prism.languages.java,
|
---|
| 90 | alias: 'language-java'
|
---|
| 91 | }
|
---|
| 92 | }
|
---|
| 93 | }
|
---|
| 94 | }
|
---|
| 95 | }
|
---|
| 96 | ],
|
---|
| 97 | tag: Prism.languages.markup.tag,
|
---|
| 98 | entity: Prism.languages.markup.entity
|
---|
| 99 | })
|
---|
| 100 | Prism.languages.javadoclike.addSupport('java', Prism.languages.javadoc)
|
---|
| 101 | })(Prism)
|
---|
| 102 | }
|
---|