canonical
Version:
Canonical code style linter and formatter for JavaScript, SCSS and CSS.
99 lines (68 loc) • 3.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _includes = require('lodash/collection/includes');
var _includes2 = _interopRequireDefault(_includes);
var _some = require('lodash/collection/some');
var _some2 = _interopRequireDefault(_some);
var _iterateJsdoc = require('./../iterateJsdoc');
var _iterateJsdoc2 = _interopRequireDefault(_iterateJsdoc);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var validateParameterNames = undefined,
validateParameterNamesDeep = undefined;
validateParameterNames = function (targetTagName, functionParameterNames, jsdocParameterNames, report) {
return (0, _some2.default)(jsdocParameterNames, function (jsdocParameterName, index) {
var functionParameterName = undefined;
functionParameterName = functionParameterNames[index];
if (!functionParameterName) {
report('@' + targetTagName + ' "' + jsdocParameterName + '" does not match an existing function parameter.');
return true;
}
if (functionParameterName !== jsdocParameterName) {
report('Expected @' + targetTagName + ' names to be "' + functionParameterNames.join(', ') + '". Got "' + jsdocParameterNames.join(', ') + '".');
return true;
}
});
};
validateParameterNamesDeep = function (targetTagName, jsdocParameterNames, report) {
var lastRealParameter = undefined;
return (0, _some2.default)(jsdocParameterNames, function (jsdocParameterName) {
var isPropertyPath = undefined;
isPropertyPath = (0, _includes2.default)(jsdocParameterName, '.');
if (isPropertyPath) {
var pathRootNodeName = undefined;
if (!lastRealParameter) {
report('@' + targetTagName + ' path declaration ("' + jsdocParameterName + '") appears before any real parameter.');
return true;
}
pathRootNodeName = jsdocParameterName.slice(0, jsdocParameterName.indexOf('.'));
if (pathRootNodeName !== lastRealParameter) {
report('@' + targetTagName + ' path declaration ("' + jsdocParameterName + '") root node name ("' + pathRootNodeName + '") does not match previous real parameter name ("' + lastRealParameter + '").');
return true;
}
} else {
lastRealParameter = jsdocParameterName;
}
});
};
exports.default = (0, _iterateJsdoc2.default)(function (_ref) {
var report = _ref.report;
var utils = _ref.utils;
var functionParameterNames = undefined,
isError = undefined,
jsdocParameterNames = undefined,
jsdocParameterNamesDeep = undefined,
targetTagName = undefined;
functionParameterNames = utils.getFunctionParameterNames();
jsdocParameterNames = utils.getJsdocParameterNames();
jsdocParameterNamesDeep = utils.getJsdocParameterNamesDeep();
targetTagName = utils.getPreferredTagName('param');
isError = validateParameterNames(targetTagName, functionParameterNames, jsdocParameterNames, report);
if (isError) {
return;
}
validateParameterNamesDeep(targetTagName, jsdocParameterNamesDeep, report);
});
module.exports = exports['default'];
//# sourceMappingURL=checkParamNames.js.map