esdoc
Version:
Good Documentation Generator For JavaScript
95 lines (73 loc) • 2.35 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
var _colorLogger = require('color-logger');
var _colorLogger2 = _interopRequireDefault(_colorLogger);
var _AbstractDoc = require('./AbstractDoc.js');
var _AbstractDoc2 = _interopRequireDefault(_AbstractDoc);
var _ParamParser = require('../Parser/ParamParser.js');
var _ParamParser2 = _interopRequireDefault(_ParamParser);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Doc class for virtual comment node of typedef.
*/
class TypedefDoc extends _AbstractDoc2.default {
/**
* apply own tag.
* @private
*/
_apply() {
super._apply();
this._$typedef();
Reflect.deleteProperty(this._value, 'export');
Reflect.deleteProperty(this._value, 'importPath');
Reflect.deleteProperty(this._value, 'importStyle');
}
/** specify ``typedef`` to kind. */
_$kind() {
super._$kind();
this._value.kind = 'typedef';
}
/** set name by using tag. */
_$name() {
const tags = this._findAll(['@typedef']);
if (!tags) {
_colorLogger2.default.w('can not resolve name.');
return;
}
let name;
for (const tag of tags) {
const { paramName } = _ParamParser2.default.parseParamValue(tag.tagValue, true, true, false);
name = paramName;
}
this._value.name = name;
}
/** set memberof by using file path. */
_$memberof() {
super._$memberof();
let memberof;
let parent = this._node.parent;
while (parent) {
if (parent.type === 'ClassDeclaration') {
memberof = `${this._pathResolver.filePath}~${parent.id.name}`;
this._value.memberof = memberof;
return;
}
parent = parent.parent;
}
this._value.memberof = this._pathResolver.filePath;
}
/** for @typedef */
_$typedef() {
const value = this._findTagValue(['@typedef']);
if (!value) return;
const { typeText, paramName, paramDesc } = _ParamParser2.default.parseParamValue(value, true, true, false);
const result = _ParamParser2.default.parseParam(typeText, paramName, paramDesc);
Reflect.deleteProperty(result, 'description');
Reflect.deleteProperty(result, 'nullable');
Reflect.deleteProperty(result, 'spread');
this._value.type = result;
}
}
exports.default = TypedefDoc;
;