canonical
Version:
Canonical code style linter and formatter for JavaScript, SCSS and CSS.
129 lines (86 loc) • 3.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _flatten = require('lodash/array/flatten');
var _flatten2 = _interopRequireDefault(_flatten);
var _keys = require('lodash/object/keys');
var _keys2 = _interopRequireDefault(_keys);
var _findKey = require('lodash/object/findKey');
var _findKey2 = _interopRequireDefault(_findKey);
var _values = require('lodash/object/values');
var _values2 = _interopRequireDefault(_values);
var _includes = require('lodash/collection/includes');
var _includes2 = _interopRequireDefault(_includes);
var _filter = require('lodash/collection/filter');
var _filter2 = _interopRequireDefault(_filter);
var _has = require('lodash/object/has');
var _has2 = _interopRequireDefault(_has);
var _map = require('lodash/collection/map');
var _map2 = _interopRequireDefault(_map);
var _tagNames = require('./tagNames');
var _tagNames2 = _interopRequireDefault(_tagNames);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var getFunctionParameterNames = undefined,
getJsdocParameterNames = undefined,
getJsdocParameterNamesDeep = undefined,
getPreferredTagName = undefined,
isValidTag = undefined;
getFunctionParameterNames = function (functionNode) {
return (0, _map2.default)(functionNode.params, function (param) {
if ((0, _has2.default)(param, 'name')) {
return param.name;
}
if ((0, _has2.default)(param, 'left.name')) {
return param.left.name;
}
throw new Error('Unsupported function signature format.');
});
};
/**
* Gets all parameter names, including those that refer to a path, e.g. "@param foo; @param foo.bar".
*/
getJsdocParameterNamesDeep = function (jsdoc, targetTagName) {
var jsdocParameterNames = undefined;
jsdocParameterNames = (0, _filter2.default)(jsdoc.tags, {
tag: targetTagName
});
jsdocParameterNames = (0, _map2.default)(jsdocParameterNames, 'name');
return jsdocParameterNames;
};
getJsdocParameterNames = function (jsdoc, targetTagName) {
var jsdocParameterNames = undefined;
jsdocParameterNames = getJsdocParameterNamesDeep(jsdoc, targetTagName);
jsdocParameterNames = (0, _filter2.default)(jsdocParameterNames, function (name) {
return name.indexOf('.') === -1;
});
return jsdocParameterNames;
};
getPreferredTagName = function (name) {
var tagPreference = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
var preferredTagName = undefined;
if ((0, _includes2.default)((0, _values2.default)(tagPreference), name)) {
return name;
}
preferredTagName = (0, _findKey2.default)(_tagNames2.default, function (aliases) {
return (0, _includes2.default)(aliases, name);
});
if (preferredTagName) {
return preferredTagName;
}
return (0, _has2.default)(tagPreference, name) ? tagPreference[name] : name;
};
isValidTag = function (name) {
var validTagNames = undefined;
validTagNames = (0, _keys2.default)(_tagNames2.default).concat((0, _flatten2.default)((0, _values2.default)(_tagNames2.default)));
return (0, _includes2.default)(validTagNames, name);
};
exports.default = {
getFunctionParameterNames: getFunctionParameterNames,
getJsdocParameterNames: getJsdocParameterNames,
getJsdocParameterNamesDeep: getJsdocParameterNamesDeep,
getPreferredTagName: getPreferredTagName,
isValidTag: isValidTag
};
module.exports = exports['default'];
//# sourceMappingURL=jsdocUtils.js.map