MCPcopy
hub / github.com/jsdoc/jsdoc / addSymbolMemberof

Function addSymbolMemberof

lib/jsdoc/src/handlers.js:235–285  ·  view source on GitHub ↗
(parser, doclet, astNode)

Source from the content-addressed store, hash-verified

233}
234
235function addSymbolMemberof(parser, doclet, astNode) {
236 let basename;
237 let memberof;
238 let memberofInfo;
239 let moduleOriginalName = '';
240 let resolveTargetRegExp;
241 let scopePunc;
242 let unresolved;
243
244 if (!astNode) {
245 return;
246 }
247
248 // check to see if the doclet name is an unresolved reference to the module object, or to `this`
249 // TODO: handle cases where the module object is shadowed in the current scope
250 if (currentModule) {
251 moduleOriginalName = `|${currentModule.originalName}`;
252 }
253 resolveTargetRegExp = new RegExp(`^((?:module.)?exports|this${moduleOriginalName})(\\.|\\[|$)`);
254 unresolved = resolveTargetRegExp.exec(doclet.name);
255
256 if (unresolved) {
257 memberofInfo = findSymbolMemberof(parser, doclet, astNode, unresolved[1], unresolved[2]);
258 memberof = memberofInfo.memberof;
259 scopePunc = memberofInfo.scopePunc;
260
261 if (memberof) {
262 doclet.name = doclet.name ?
263 memberof + scopePunc + doclet.name :
264 memberof;
265 }
266 }
267 else {
268 memberofInfo = parser.astnodeToMemberof(astNode);
269 basename = memberofInfo.basename;
270 memberof = memberofInfo.memberof;
271 }
272
273 // if we found a memberof name, apply it to the doclet
274 if (memberof) {
275 doclet.addTag('memberof', memberof);
276 if (basename) {
277 doclet.name = (doclet.name || '')
278 .replace(new RegExp(`^${escape(basename)}.`), '');
279 }
280 }
281 // otherwise, add the defaults for a module (if we're currently in a module)
282 else {
283 setModuleScopeMemberOf(parser, doclet);
284 }
285}
286
287function newSymbolDoclet(parser, docletSrc, e) {
288 const newDoclet = createSymbolDoclet(docletSrc, e);

Callers 1

newSymbolDocletFunction · 0.85

Calls 4

findSymbolMemberofFunction · 0.85
setModuleScopeMemberOfFunction · 0.85
astnodeToMemberofMethod · 0.80
addTagMethod · 0.80

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…