diff --git a/jsdoc.js b/jsdoc.js index 180551dd..bc02085e 100644 --- a/jsdoc.js +++ b/jsdoc.js @@ -222,6 +222,7 @@ function main() { indexAll(docs); + require('jsdoc/augment').addInherited(docs); require('jsdoc/borrow').resolveBorrows(docs); if (env.opts.explain) { diff --git a/rhino_modules/jsdoc/augment.js b/rhino_modules/jsdoc/augment.js new file mode 100644 index 00000000..36085bdd --- /dev/null +++ b/rhino_modules/jsdoc/augment.js @@ -0,0 +1,121 @@ + +(function() { + + exports.addInherited = function(docs) { + var dependencies = mapDependencies(docs.index); + var sorted = sort(dependencies); + var additions = []; + sorted.forEach(function(name) { + var doclets = docs.index[name]; + Array.prototype.push.apply(additions, getAdditions(doclets, docs)); + }); + additions.forEach(function(doc) { + var name = doc.longname; + if (!(docs.index.hasOwnProperty(name))) { + docs.index[name] = []; + } + docs.index[name].push(doc); + docs.push(doc); + }); + } + + function mapDependencies(index) { + var doclets, doc, len, dependencies = {}; + for (var name in index) { + doclets = index[name]; + for (var i=0, ii=doclets.length; i