|
| 1 | +const env = require('jsdoc/lib/jsdoc/env'); |
| 2 | + |
| 3 | +const globalParams = env.conf.templates; |
| 4 | +exports.defineTags = function (dictionary) { |
| 5 | + dictionary.defineTag('usage', { |
| 6 | + mustHaveValue: false, |
| 7 | + mustNotHaveDescription: false, |
| 8 | + canHaveType: false, |
| 9 | + canHaveName: false, |
| 10 | + onTagged: function (doclet, tag) { |
| 11 | + if (tag.value) { |
| 12 | + doclet.usage = tag.value; |
| 13 | + } else { |
| 14 | + const deprecatedClasses = []; |
| 15 | + if (doclet.tags) { |
| 16 | + for (let index = 0; index < doclet.tags.length; index++) { |
| 17 | + const tag = doclet.tags[index]; |
| 18 | + if (tag.title === 'deprecatedclass') { |
| 19 | + deprecatedClasses.push(tag.value); |
| 20 | + } |
| 21 | + } |
| 22 | + } |
| 23 | + doclet.usage = { |
| 24 | + className: doclet.kind === 'class' ? doclet.name : '', |
| 25 | + globalParams, |
| 26 | + deprecatedClasses: deprecatedClasses |
| 27 | + }; |
| 28 | + } |
| 29 | + } |
| 30 | + }); |
| 31 | +}; |
| 32 | + |
| 33 | +exports.handlers = { |
| 34 | + parseComplete: function (e) { |
| 35 | + const doclets = e.doclets; |
| 36 | + let usage = null; |
| 37 | + for (let index = 0; index < doclets.length; index++) { |
| 38 | + const doclet = doclets[index]; |
| 39 | + if (doclet.usage && typeof doclet.usage === 'object') { |
| 40 | + usage = doclet.usage; |
| 41 | + } |
| 42 | + if (doclet.meta && doclet.meta.code && doclet.meta.code.type === 'ClassDeclaration' && usage) { |
| 43 | + usage.paramsNames = doclet.meta.code.paramnames; |
| 44 | + } |
| 45 | + } |
| 46 | + }, |
| 47 | + newDoclet: function (e) { |
| 48 | + var usage = e.doclet.usage; |
| 49 | + if (usage && usage.indexOf) { |
| 50 | + for (const key in globalParams) { |
| 51 | + if (Object.hasOwnProperty.call(globalParams, key)) { |
| 52 | + const element = globalParams[key]; |
| 53 | + e.doclet.usage = e.doclet.usage.replace(`{${key}}`, element); |
| 54 | + } |
| 55 | + } |
| 56 | + } |
| 57 | + } |
| 58 | +}; |
0 commit comments