From c1ed8d84c3073129dcba5955caec21f9cfd402fa Mon Sep 17 00:00:00 2001 From: Michael Mathews Date: Mon, 15 Aug 2011 19:40:45 +0100 Subject: [PATCH] Added @mixes tag. --- rhino_modules/jsdoc/doclet.js | 11 +++++ .../jsdoc/tag/dictionary/definitions.js | 12 +++++- rhino_modules/jsdoc/util/templateHelper.js | 2 +- templates/default/publish.js | 40 +++++++++++++------ templates/default/tmpl/container.tmpl | 16 ++++++++ 5 files changed, 65 insertions(+), 16 deletions(-) diff --git a/rhino_modules/jsdoc/doclet.js b/rhino_modules/jsdoc/doclet.js index 4229ab0e..b97e5bc8 100644 --- a/rhino_modules/jsdoc/doclet.js +++ b/rhino_modules/jsdoc/doclet.js @@ -124,6 +124,17 @@ this.borrowed.push(about); } + exports.Doclet.prototype.mix = function(source) { + if (!this.mixes) { + /** + A list of symbols that are mixed into this one, if any. + @type Array. + */ + this.mixes = []; + } + this.mixes.push(source); + } + /** Add a symbol to this doclet's `augments` array. @param {string} base - The longname of the base symbol. */ diff --git a/rhino_modules/jsdoc/tag/dictionary/definitions.js b/rhino_modules/jsdoc/tag/dictionary/definitions.js index 783e6403..12f2a14e 100644 --- a/rhino_modules/jsdoc/tag/dictionary/definitions.js +++ b/rhino_modules/jsdoc/tag/dictionary/definitions.js @@ -62,8 +62,16 @@ var [target, source] = parseBorrows(doclet, tag); doclet.borrow(target, source); } - }) - .synonym('mixes'); + }); + + // that adds all of it's members to me + dictionary.defineTag('mixes', { + mustHaveValue: true, + onTagged: function(doclet, tag) { + var source = firstWordOf(tag.value); + doclet.mix(source); + } + }); dictionary.defineTag('class', { onTagged: function(doclet, tag) { diff --git a/rhino_modules/jsdoc/util/templateHelper.js b/rhino_modules/jsdoc/util/templateHelper.js index c34373bc..ced87b8c 100644 --- a/rhino_modules/jsdoc/util/templateHelper.js +++ b/rhino_modules/jsdoc/util/templateHelper.js @@ -29,7 +29,7 @@ exports.registerLink = function(longname, url) { } // each container gets its own html file -var containers = ['class', 'module', 'namespace']; +var containers = ['class', 'module', 'namespace', 'mixin']; /** Turn a doclet into a URL. */ exports.createLink = function(doclet) { diff --git a/templates/default/publish.js b/templates/default/publish.js index ddaec7d7..510dea57 100644 --- a/templates/default/publish.js +++ b/templates/default/publish.js @@ -156,6 +156,7 @@ // kinds of containers var globals = data.get( data.find({kind: ['property', 'function'], memberof: {isUndefined: true}}) ), modules = data.get( data.find({kind: 'module'}) ), + mixins = data.get( data.find({kind: 'mixin'}) ), namespaces = data.get( data.find({kind: 'namespace'}) ); var outdir = opts.destination; @@ -179,7 +180,7 @@ return url? ''+(linktext || longname)+'' : (linktext || longname); } - var containers= ['class', 'module', 'namespace']; + var containers = ['class', 'module', 'namespace', 'mixin']; data.forEach(function(doclet) { var url = helper.createLink(doclet); @@ -208,17 +209,6 @@ nav = nav + ''; } - var namespaceNames = data.get( data.find({kind: 'namespace'}) ); - if (namespaceNames.length) { - nav = nav + '

Namespaces

'; - } - var classNames = data.get( data.find({kind: 'class'}) ); if (classNames.length) { nav = nav + '

Classes

'; } -//console.log('classNames', classNames); + + var namespaceNames = data.get( data.find({kind: 'namespace'}) ); + if (namespaceNames.length) { + nav = nav + '

Namespaces

'; + } + + var mixinNames = data.get( data.find({kind: 'mixin'}) ); + if (mixinNames.length) { + nav = nav + '

Mixins

'; + } var globalNames = data.get( data.find({kind: ['property', 'function'], 'memberof': {'isUndefined': true}}) ); @@ -258,6 +269,9 @@ var namespaces = data.get( data.find({kind: 'namespace', longname: longname}) ); if (namespaces.length) generate('Namespace: '+namespaces[0].name, namespaces, helper.longnameToUrl[longname]); + + var mixins = data.get( data.find({kind: 'mixin', longname: longname}) ); + if (mixins.length) generate('Mixin: '+mixins[0].name, mixins, helper.longnameToUrl[longname]); } if (globals.length) generate('Global', [{kind: 'globalobj'}], 'global.html'); diff --git a/templates/default/tmpl/container.tmpl b/templates/default/tmpl/container.tmpl index 811602a3..3884fdd7 100644 --- a/templates/default/tmpl/container.tmpl +++ b/templates/default/tmpl/container.tmpl @@ -85,6 +85,22 @@ } ?> + +

Mixes In

+ + + +