Skip to content

Commit 25c46b3

Browse files
Transform jsdoc
1 parent bb53e29 commit 25c46b3

File tree

1 file changed

+67
-65
lines changed

1 file changed

+67
-65
lines changed

src/languages/jsdoc.js

Lines changed: 67 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { insertBefore } from '../util/language-util.js';
21
import javadoclike from './javadoclike.js';
32
import javascript from './javascript.js';
43
import typescript from './typescript.js';
@@ -8,85 +7,88 @@ export default {
87
id: 'jsdoc',
98
base: javadoclike,
109
require: [javascript, typescript],
11-
grammar ({ base, languages }) {
10+
grammar ({ languages }) {
1211
const { javascript, typescript } = languages;
1312

1413
const type = /\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/.source;
1514
const parameterPrefix = '(@(?:arg|argument|param|property)\\s+(?:' + type + '\\s+)?)';
1615

17-
insertBefore(base, 'keyword', {
18-
'optional-parameter': {
19-
// @param {string} [baz.foo="bar"] foo bar
20-
pattern: RegExp(
21-
parameterPrefix + /\[(?:(?!\s)[$\w\xA0-\uFFFF.])+(?:=[^[\]]+)?\](?=\s|$)/.source
22-
),
16+
return {
17+
'parameter': {
18+
// @param {string} foo - foo bar
19+
pattern: RegExp(parameterPrefix + /(?:(?!\s)[$\w\xA0-\uFFFF.])+(?=\s|$)/.source),
2320
lookbehind: true,
2421
inside: {
25-
'parameter': {
26-
pattern: /(^\[)[$\w\xA0-\uFFFF\.]+/,
22+
'punctuation': /\./,
23+
},
24+
},
25+
$insertBefore: {
26+
'keyword': {
27+
'optional-parameter': {
28+
// @param {string} [baz.foo="bar"] foo bar
29+
pattern: RegExp(
30+
parameterPrefix +
31+
/\[(?:(?!\s)[$\w\xA0-\uFFFF.])+(?:=[^[\]]+)?\](?=\s|$)/.source
32+
),
2733
lookbehind: true,
2834
inside: {
29-
'punctuation': /\./,
35+
'parameter': {
36+
pattern: /(^\[)[$\w\xA0-\uFFFF\.]+/,
37+
lookbehind: true,
38+
inside: {
39+
'punctuation': /\./,
40+
},
41+
},
42+
'code': {
43+
pattern: /(=)[\s\S]*(?=\]$)/,
44+
lookbehind: true,
45+
alias: 'language-javascript',
46+
inside: 'javascript',
47+
},
48+
'punctuation': /[=[\]]/,
3049
},
3150
},
32-
'code': {
33-
pattern: /(=)[\s\S]*(?=\]$)/,
34-
lookbehind: true,
35-
alias: 'language-javascript',
36-
inside: 'javascript',
37-
},
38-
'punctuation': /[=[\]]/,
39-
},
40-
},
41-
'class-name': [
42-
{
43-
pattern: RegExp(
44-
/(@(?:augments|class|extends|interface|memberof!?|template|this|typedef)\s+(?:<TYPE>\s+)?)[A-Z]\w*(?:\.[A-Z]\w*)*/.source.replace(
45-
/<TYPE>/g,
46-
() => type
47-
)
48-
),
49-
lookbehind: true,
50-
inside: {
51-
'punctuation': /\./,
52-
},
53-
},
54-
{
55-
pattern: RegExp('(@[a-z]+\\s+)' + type),
56-
lookbehind: true,
57-
inside: {
58-
'string': javascript.string,
59-
'number': javascript.number,
60-
'boolean': javascript.boolean,
61-
'keyword': typescript.keyword,
62-
'operator': /=>|\.\.\.|[&|?:*]/,
63-
'punctuation': /[.,;=<>{}()[\]]/,
64-
},
65-
},
66-
],
67-
'example': {
68-
pattern: /(@example\s+(?!\s))(?:[^@\s]|\s+(?!\s))+?(?=\s*(?:\*\s*)?(?:@\w|\*\/))/,
69-
lookbehind: true,
70-
inside: {
71-
'code': {
72-
pattern: /^([\t ]*(?:\*\s*)?)\S.*$/m,
51+
'class-name': [
52+
{
53+
pattern: RegExp(
54+
/(@(?:augments|class|extends|interface|memberof!?|template|this|typedef)\s+(?:<TYPE>\s+)?)[A-Z]\w*(?:\.[A-Z]\w*)*/.source.replace(
55+
/<TYPE>/g,
56+
() => type
57+
)
58+
),
59+
lookbehind: true,
60+
inside: {
61+
'punctuation': /\./,
62+
},
63+
},
64+
{
65+
pattern: RegExp('(@[a-z]+\\s+)' + type),
66+
lookbehind: true,
67+
inside: {
68+
'string': javascript.string,
69+
'number': javascript.number,
70+
'boolean': javascript.boolean,
71+
'keyword': typescript.keyword,
72+
'operator': /=>|\.\.\.|[&|?:*]/,
73+
'punctuation': /[.,;=<>{}()[\]]/,
74+
},
75+
},
76+
],
77+
'example': {
78+
pattern:
79+
/(@example\s+(?!\s))(?:[^@\s]|\s+(?!\s))+?(?=\s*(?:\*\s*)?(?:@\w|\*\/))/,
7380
lookbehind: true,
74-
alias: 'language-javascript',
75-
inside: 'javascript',
81+
inside: {
82+
'code': {
83+
pattern: /^([\t ]*(?:\*\s*)?)\S.*$/m,
84+
lookbehind: true,
85+
alias: 'language-javascript',
86+
inside: 'javascript',
87+
},
88+
},
7689
},
7790
},
7891
},
79-
});
80-
81-
return {
82-
'parameter': {
83-
// @param {string} foo - foo bar
84-
pattern: RegExp(parameterPrefix + /(?:(?!\s)[$\w\xA0-\uFFFF.])+(?=\s|$)/.source),
85-
lookbehind: true,
86-
inside: {
87-
'punctuation': /\./,
88-
},
89-
},
9092
};
9193
},
9294
};

0 commit comments

Comments
 (0)