mirror of
https://github.com/react/react-native-devtools-frontend.git
synced 2026-10-05 11:31:31 +08:00
This CL adds the eslint-plugin-jsdoc plugin and enables just one rule, `jsdoc/check-alignment`, which ensures that all the lines in a comment are correctly aligned. For example: ``` /** * foo * bar */ ``` Would fail the check and be corrected to: ``` /** * foo * bar */ ``` DISABLE_THIRD_PARTY_CHECK=deliberate install + use of eslint-plugin-jsdoc node_module Bug: none Change-Id: I969983cd550653654a334ede3409b8c850467245 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/4110906 Commit-Queue: Andres Olivares <andoli@chromium.org> Reviewed-by: Andres Olivares <andoli@chromium.org> Auto-Submit: Jack Franklin <jacktfranklin@chromium.org> Commit-Queue: Jack Franklin <jacktfranklin@chromium.org>
170 lines
3.6 KiB
TypeScript
170 lines
3.6 KiB
TypeScript
import getParser from '../../src/parser/block-parser';
|
|
import { Line } from '../../src/primitives';
|
|
import { seedTokens } from '../../src/util';
|
|
|
|
let source: Line[];
|
|
|
|
beforeEach(() => {
|
|
source = [
|
|
{
|
|
number: 1,
|
|
source: ' /**',
|
|
tokens: seedTokens({
|
|
start: ' ',
|
|
delimiter: '/**',
|
|
postDelimiter: '',
|
|
description: '',
|
|
end: '',
|
|
}),
|
|
},
|
|
{
|
|
number: 2,
|
|
source: ' * description 0',
|
|
tokens: seedTokens({
|
|
start: ' ',
|
|
delimiter: '*',
|
|
postDelimiter: ' ',
|
|
description: 'description 0',
|
|
end: '',
|
|
}),
|
|
},
|
|
{
|
|
number: 3,
|
|
source: ' *',
|
|
tokens: seedTokens({
|
|
start: ' ',
|
|
delimiter: '*',
|
|
postDelimiter: '',
|
|
description: '',
|
|
end: '',
|
|
}),
|
|
},
|
|
{
|
|
number: 4,
|
|
source: ' * description 1',
|
|
tokens: seedTokens({
|
|
start: ' ',
|
|
delimiter: '*',
|
|
postDelimiter: ' ',
|
|
description: 'description 1',
|
|
end: '',
|
|
}),
|
|
},
|
|
{
|
|
number: 5,
|
|
source: ' *',
|
|
tokens: seedTokens({
|
|
start: ' ',
|
|
delimiter: '*',
|
|
postDelimiter: '',
|
|
description: '',
|
|
end: '',
|
|
}),
|
|
},
|
|
{
|
|
number: 6,
|
|
source: ' * @param {string} value value description 0',
|
|
tokens: seedTokens({
|
|
start: ' ',
|
|
delimiter: '*',
|
|
postDelimiter: ' ',
|
|
description: '@param {string} value value description 0',
|
|
end: '',
|
|
}),
|
|
},
|
|
{
|
|
number: 7,
|
|
source: ' ```',
|
|
tokens: seedTokens({
|
|
start: ' ',
|
|
delimiter: '',
|
|
postDelimiter: '',
|
|
description: '```',
|
|
end: '',
|
|
}),
|
|
},
|
|
{
|
|
number: 8,
|
|
source: ' @sample code',
|
|
tokens: seedTokens({
|
|
start: ' ',
|
|
delimiter: '',
|
|
postDelimiter: '',
|
|
description: '@sample code',
|
|
end: '',
|
|
}),
|
|
},
|
|
{
|
|
number: 9,
|
|
source: ' ```',
|
|
tokens: seedTokens({
|
|
start: ' ',
|
|
delimiter: '',
|
|
postDelimiter: '',
|
|
description: '```',
|
|
end: '',
|
|
}),
|
|
},
|
|
{
|
|
number: 10,
|
|
source: ' * value description 1',
|
|
tokens: seedTokens({
|
|
start: ' ',
|
|
delimiter: '*',
|
|
postDelimiter: ' ',
|
|
description: 'value description 1',
|
|
end: '',
|
|
}),
|
|
},
|
|
{
|
|
number: 11,
|
|
source: ' */',
|
|
tokens: seedTokens({
|
|
start: ' ',
|
|
delimiter: '',
|
|
postDelimiter: '',
|
|
description: '',
|
|
end: '*/',
|
|
}),
|
|
},
|
|
];
|
|
});
|
|
|
|
test('standard fences', () => {
|
|
const parser = getParser();
|
|
const groups: Line[][] = parser(source);
|
|
|
|
expect(groups.length).toBe(2);
|
|
expect(groups).toEqual([source.slice(0, 5), source.slice(5)]);
|
|
});
|
|
|
|
test('custom fence', () => {
|
|
source = source.map((line) => {
|
|
line.tokens.description = line.tokens.description.replace('```', '###');
|
|
return line;
|
|
});
|
|
|
|
const parser = getParser({ fence: '###' });
|
|
const groups: Line[][] = parser(source);
|
|
|
|
expect(groups.length).toBe(2);
|
|
expect(groups).toEqual([source.slice(0, 5), source.slice(5)]);
|
|
});
|
|
|
|
test('fence function', () => {
|
|
source = source.map((line) => {
|
|
line.tokens.description = line.tokens.description.replace('```', '###');
|
|
return line;
|
|
});
|
|
|
|
function isFenced(source: string) {
|
|
return source.split('###').length % 2 === 0;
|
|
}
|
|
|
|
const parser = getParser({ fence: isFenced });
|
|
const groups: Line[][] = parser(source);
|
|
|
|
expect(groups.length).toBe(2);
|
|
expect(groups).toEqual([source.slice(0, 5), source.slice(5)]);
|
|
});
|