Added @mixes tag.

This commit is contained in:
Michael Mathews 2011-08-15 19:40:45 +01:00
parent 0c64dc6a1f
commit c1ed8d84c3
5 changed files with 65 additions and 16 deletions

View File

@ -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.<string>
*/
this.mixes = [];
}
this.mixes.push(source);
}
/** Add a symbol to this doclet's `augments` array.
@param {string} base - The longname of the base symbol.
*/

View File

@ -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) {

View File

@ -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) {

View File

@ -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? '<a href="'+url+'">'+(linktext || longname)+'</a>' : (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 + '</ul>';
}
var namespaceNames = data.get( data.find({kind: 'namespace'}) );
if (namespaceNames.length) {
nav = nav + '<h3>Namespaces</h3><ul>';
namespaceNames.forEach(function(n) {
if ( !seen.hasOwnProperty(n.longname) ) nav += '<li>'+linkto(n.longname, n.name)+'</li>';
seen[n.longname] = true;
});
nav = nav + '</ul>';
}
var classNames = data.get( data.find({kind: 'class'}) );
if (classNames.length) {
nav = nav + '<h3>Classes</h3><ul>';
@ -235,7 +225,28 @@
nav = nav + '</ul>';
}
//console.log('classNames', classNames);
var namespaceNames = data.get( data.find({kind: 'namespace'}) );
if (namespaceNames.length) {
nav = nav + '<h3>Namespaces</h3><ul>';
namespaceNames.forEach(function(n) {
if ( !seen.hasOwnProperty(n.longname) ) nav += '<li>'+linkto(n.longname, n.name)+'</li>';
seen[n.longname] = true;
});
nav = nav + '</ul>';
}
var mixinNames = data.get( data.find({kind: 'mixin'}) );
if (mixinNames.length) {
nav = nav + '<h3>Mixins</h3><ul>';
mixinNames.forEach(function(m) {
if ( !seen.hasOwnProperty(m.longname) ) nav += '<li>'+linkto(m.longname, m.name)+'</li>';
seen[m.longname] = true;
});
nav = nav + '</ul>';
}
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');

View File

@ -85,6 +85,22 @@
}
?>
<?js
if (doc.mixes && doc.mixes.length) {
?>
<h3 class="subsection-title">Mixes In</h3>
<ul><?js
doc.mixes.forEach(function(a) {
?>
<li><?js= linkto(a, a) ?></li>
<?js
});
?></ul>
<?js
}
?>
<?js
if (doc.requires && doc.requires.length) {
?>