mirror of
https://github.com/react/react-native-devtools-frontend.git
synced 2026-09-28 21:24:26 +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
985 B
JavaScript
45 lines
985 B
JavaScript
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
const reTag = /^@\S+/;
|
|
/**
|
|
* Creates configured `Parser`
|
|
* @param {Partial<Options>} options
|
|
*/
|
|
|
|
function getParser({
|
|
fence = '```'
|
|
} = {}) {
|
|
const fencer = getFencer(fence);
|
|
|
|
const toggleFence = (source, isFenced) => fencer(source) ? !isFenced : isFenced;
|
|
|
|
return function parseBlock(source) {
|
|
// start with description section
|
|
const sections = [[]];
|
|
let isFenced = false;
|
|
|
|
for (const line of source) {
|
|
if (reTag.test(line.tokens.description) && !isFenced) {
|
|
sections.push([line]);
|
|
} else {
|
|
sections[sections.length - 1].push(line);
|
|
}
|
|
|
|
isFenced = toggleFence(line.tokens.description, isFenced);
|
|
}
|
|
|
|
return sections;
|
|
};
|
|
}
|
|
|
|
exports.default = getParser;
|
|
|
|
function getFencer(fence) {
|
|
if (typeof fence === 'string') return source => source.split(fence).length % 2 === 0;
|
|
return fence;
|
|
}
|
|
//# sourceMappingURL=block-parser.cjs.map
|