mirror of
https://github.com/react/react-native-devtools-frontend.git
synced 2026-09-28 13:13:37 +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>
45 lines
1.4 KiB
JavaScript
45 lines
1.4 KiB
JavaScript
import { isSpace } from '../util.js';
|
|
const zeroWidth = {
|
|
line: 0,
|
|
start: 0,
|
|
delimiter: 0,
|
|
postDelimiter: 0,
|
|
tag: 0,
|
|
postTag: 0,
|
|
name: 0,
|
|
postName: 0,
|
|
type: 0,
|
|
postType: 0,
|
|
description: 0,
|
|
end: 0,
|
|
lineEnd: 0,
|
|
};
|
|
const headers = { lineEnd: 'CR' };
|
|
const fields = Object.keys(zeroWidth);
|
|
const repr = (x) => (isSpace(x) ? `{${x.length}}` : x);
|
|
const frame = (line) => '|' + line.join('|') + '|';
|
|
const align = (width, tokens) => Object.keys(tokens).map((k) => repr(tokens[k]).padEnd(width[k]));
|
|
export default function inspect({ source }) {
|
|
var _a, _b;
|
|
if (source.length === 0)
|
|
return '';
|
|
const width = Object.assign({}, zeroWidth);
|
|
for (const f of fields)
|
|
width[f] = ((_a = headers[f]) !== null && _a !== void 0 ? _a : f).length;
|
|
for (const { number, tokens } of source) {
|
|
width.line = Math.max(width.line, number.toString().length);
|
|
for (const k in tokens)
|
|
width[k] = Math.max(width[k], repr(tokens[k]).length);
|
|
}
|
|
const lines = [[], []];
|
|
for (const f of fields)
|
|
lines[0].push(((_b = headers[f]) !== null && _b !== void 0 ? _b : f).padEnd(width[f]));
|
|
for (const f of fields)
|
|
lines[1].push('-'.padEnd(width[f], '-'));
|
|
for (const { number, tokens } of source) {
|
|
const line = number.toString().padStart(width.line);
|
|
lines.push([line, ...align(width, tokens)]);
|
|
}
|
|
return lines.map(frame).join('\n');
|
|
}
|