Added tests for @desc.

This commit is contained in:
Michael Mathews 2010-07-04 23:03:33 +01:00
parent dac2229fd2
commit 93a3c0dd81
6 changed files with 115 additions and 37 deletions

View File

@ -1,6 +1,6 @@
{
"app": {
"name": "jsdoc-3",
"version": "0.0.0+2010-06-27-2042"
"version": "0.0.0+2010-07-04-2302"
}
}

View File

@ -246,15 +246,9 @@
for (var i = 0, leni = tags.length; i < leni; i++) {
tagAbout = tagDictionary.lookUp(tags[i].name);
if (tags[i].name === 'private') {
tags[tags.length] = parse_tag.fromText('access private');
}
else if (tags[i].name === 'protected') {
tags[tags.length] = parse_tag.fromText('access protected');
}
else if (tags[i].name === 'public') {
tags[tags.length] = parse_tag.fromText('access public');
}
if (tagAbout.setsDocletAccess) {
tags[tags.length] = parse_tag.fromText('access '+tags[i].name);
}
else if (tags[i].name === 'const') {
tags[tags.length] = parse_tag.fromText('attribute constant');
}
@ -280,7 +274,7 @@
taggedMemberof = memberof = tags[i].value;
}
if ( tagAbout.canProvideName/*nameables.indexOf(tags[i].name) > -1*/ ) {
if ( tagAbout.setsDocletName/*nameables.indexOf(tags[i].name) > -1*/ ) {
if (tags[i].name === 'property' && (isa === 'constructor')) {
// to avoid backwards compatability conflicts we just ignore a @property in a doclet after a @constructor
}

View File

@ -11,7 +11,8 @@
(function() {
var Token = Packages.org.mozilla.javascript.Token,
currentModule = '';
currentModule = '',
tagDictionary = require('jsdoc/tagdictionary');
exports.setCurrentModule = function(moduleName) {
currentModule = moduleName;
@ -29,8 +30,9 @@
memberof = doclet.tagValue('memberof') || '',
path,
shortname,
prefix,
supportedNamespaces = ['module', 'event', 'file'];
prefix;
//,
//supportedNamespaces = ['module', 'event', 'file'];
// only keep the first word of the first tagged name
name = name.split(/\s+/g)[0];
@ -55,9 +57,9 @@
if (memberof) { doclet.setTag('memberof', memberof); }
}
// if name doesn't already have a doc-namespace and needs one
// if name doesn't already have a docspace and needs one
// the namespace should appear in the path but not the name
if (supportedNamespaces.indexOf(isa) > -1) {
if (tagDictionary.lookUp(isa).isDocspace) {
if ( /^[a-z_$-]+:(\S+)/i.test(name) ) {
name = RegExp.$1;
}

View File

@ -46,8 +46,9 @@
//// default properties of all tags
TagDefinition.prototype = {
isExported : false, // this tag should appear as a top level property in the doclet?
canProvideIsa : false, // the name of this tag is used to define the doclet's isa property
canProvideName : false, // this tag can be used to name the doclet
setsDocletIsa : false, // the name of this tag is used to define the doclet's isa property
setsDocletName : false, // this tag can be used to name the doclet
setsDocletAccess: false,
isDocspace : false, // the name of this tag becomes the docspace for the doclet name, like "event:"
canHaveType : false, // this tag can have a {type}
canHavePname : false, // this tag can have a parameter-type name
@ -57,14 +58,14 @@
//// default event handlers?
// TagDefinition.prototype.onAddTagToDoclet = function(tag, doclet) {
// if (this.canProvideIsa) {
// if (this.setsDocletIsa) {
// if (doclet.isa) {
// throw 'Overwriting existing isa in doclet: was "'+doclet.isa+'", now "'+this.title+'"';
// }
// doclet.isa = this.title;
// }
//
// if (this.canProvideName) {
// if (this.setsDocletName) {
// if (doclet.name) {
// throw 'Overwriting existing name in doclet: was "'+doclet.name+'", now "'+this.title+'"';
// }
@ -99,32 +100,32 @@
// @namespace <docletName>
new TagDefinition('namespace', {
canProvideIsa: true,
canProvideName: true
setsDocletIsa: true,
setsDocletName: true
});
// @constructor <docletName>
new TagDefinition('constructor', {
canProvideIsa: true,
canProvideName: true
setsDocletIsa: true,
setsDocletName: true
});
// @const <docletName>
new TagDefinition('const', {
canProvideIsa: true,
canProvideName: true
setsDocletIsa: true,
setsDocletName: true
});
// @enum <docletName>
new TagDefinition('enum', {
canProvideIsa: true,
canProvideName: true
setsDocletIsa: true,
setsDocletName: true
});
// @file|overview|fileoverview <docletName>
new TagDefinition('file', {
canProvideIsa: true,
canProvideName: true,
setsDocletIsa: true,
setsDocletName: true,
isDocspace: true
});
@ -133,7 +134,7 @@
canHaveType: true,
canHavePname: true,
canHavePdesc: true,
canProvideName: true
setsDocletName: true
});
// @property <docletType> <docletName> <docletDesc>
@ -141,20 +142,20 @@
canHaveType: true,
canHavePname: true,
canHavePdesc: true,
canProvideName: true
setsDocletName: true
});
// @event <docletName>
new TagDefinition('event', {
canProvideIsa: true,
canProvideName: true,
setsDocletIsa: true,
setsDocletName: true,
isDocspace: true
});
// @module <docletName>
new TagDefinition('module', {
canProvideIsa: true,
canProvideName: true,
setsDocletIsa: true,
setsDocletName: true,
isDocspace: true
});
@ -185,4 +186,21 @@
canHavePdesc: true
});
// @private <docletAccess>
new TagDefinition('private', {
setsDocletAccess: true
});
// @protected <docletAccess>
new TagDefinition('protected', {
setsDocletAccess: true
});
// @public <docletAccess>
new TagDefinition('public', {
setsDocletAccess: true
});
})();

View File

@ -5,6 +5,7 @@ load(BASEDIR + '/test/tests/04_jsdoc_docset.js');
load(BASEDIR + '/test/tests/05_jsdoc_doclet.js');
load(BASEDIR + '/test/tests/06_jsdoc_tag.js');
load(BASEDIR + '/test/tests/09_tag_desc.js');
load(BASEDIR + '/test/tests/10_tag_constructor.js');
load(BASEDIR + '/test/tests/11_tag_namespace.js');
load(BASEDIR + '/test/tests/12_tag_property.js');
@ -18,6 +19,6 @@ load(BASEDIR + '/test/tests/20_tag_file.js');
// see http://visionmedia.github.com/jspec/
JSpec.run({
reporter: JSpec.reporters.Terminal,
failuresOnly: false
failuresOnly: true
})
.report();

63
test/tests/09_tag_desc.js Normal file
View File

@ -0,0 +1,63 @@
(function() {
var jsdoc,
doclets;
JSpec.describe('@desc', function() {
before(function() {
// docsets can only be created by parsers
jsdoc = {
tag: require('jsdoc/tag'),
parser: require('jsdoc/parser')
};
jsdoc.parser.parseFiles(BASEDIR + 'test/tests/09_tag_desc.js');
doclets = jsdoc.parser.result;
});
describe('A doclet that starts with untagged text', function() {
it('should have an `desc` property set to the text', function() {
var doclet = doclets[0].toObject();
expect(doclet).to(have_property, 'desc');
expect(doclet.desc).to(eql, 'Here is Edward Bear, coming downstairs now,\nbump,\n bump,\n bump');
});
});
describe('A doclet that has a @desc tag', function() {
it('should have an `desc` property set to the text of that tag', function() {
var doclet = doclets[1].toObject();
expect(doclet).to(have_property, 'desc');
expect(doclet.desc).to(eql, 'Here is Edward Bear, coming downstairs now, bump, bump, bump');
});
});
describe('A doclet that has a @description tag', function() {
it('should have an `desc` property set to the text of that tag', function() {
var doclet = doclets[2].toObject();
expect(doclet).to(have_property, 'desc');
expect(doclet.desc).to(eql, 'Here is Edward Bear, coming downstairs now, bump, bump, bump');
});
});
});
})();
(function testarea() {
/**
* Here is Edward Bear, coming downstairs now,
* bump,
* bump,
* bump
* @namespace Poo
*/
/**
@namespace Bear
@desc Here is Edward Bear, coming downstairs now, bump, bump, bump
*/
/**
@namespace Winnie
@description Here is Edward Bear, coming downstairs now, bump, bump, bump
*/
})();