textlint
Version:
The pluggable linting tool for text and markdown.
49 lines • 1.79 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.createFullPackageName = exports.removePrefixFromPackageName = void 0;
/**
* Remove `prefix` from `text`.
*/
const removePrefixFromPackageName = (prefixList, packageName) => {
for (let i = 0; i < prefixList.length; i++) {
const prefix = prefixList[i];
// @scope/name -> @scope/name
// @scope/textlint-rule-name -> @scope/name
if (packageName.charAt(0) === "@") {
const [namespace, name] = packageName.split("/");
if (name.startsWith(prefix)) {
return `${namespace}/${name.slice(prefix.length)}`;
}
}
// name -> name
// textlint-rule-name -> name
else if (packageName.startsWith(prefix)) {
return packageName.slice(prefix.length);
}
}
// No match
return packageName;
};
exports.removePrefixFromPackageName = removePrefixFromPackageName;
/**
* Create full package name and return
* @param {string} prefix
* @param {string} name
* @returns {string}
*/
const createFullPackageName = (prefix, name) => {
if (name.charAt(0) === "@") {
const scopedPackageNameRegex = new RegExp(`^${prefix}(-|$)`);
// if @scope/<name> -> @scope/<prefix><name>
if (!scopedPackageNameRegex.test(name.split("/")[1])) {
/*
* for scoped packages, insert the textlint-rule after the first / unless
* the path is already @scope/<name> or @scope/textlint-rule-<name>
*/
return name.replace(/^@([^/]+)\/(.*)$/, `@$1/${prefix}$2`);
}
}
return `${prefix}${name}`;
};
exports.createFullPackageName = createFullPackageName;
//# sourceMappingURL=textlint-package-name-util.js.map
;