diff --git a/examples/base.js b/examples/base.js deleted file mode 100644 index 77c06226..00000000 --- a/examples/base.js +++ /dev/null @@ -1,73 +0,0 @@ -// Example of how to document code written in the style of something -// like Dean Edwards' base2.js library - - -var Animal = Class.extend({ - /** - * @constructor Animal - */ - constructor: function(name) { - - /** - * An instance property. - * @property {string|undefined} Animal#name - */ - this.name = name; - }, - - /** - * A static property. - * @property {string} Animal.name - */ - name: "", - - /** - * @method Animal#eat - */ - eat: function() { - this.speak("Yum!"); - }, - - /** - * @method Animal#speak - * @param {string} message - */ - speak: function(message) { - alert(this.name + ": " + message); - } -}); - -/** - * @constructor Snake - * @extends Animal - */ -var Snake = Animal.extend({ - - /** - * The sound a snake makes? - * @method Snake#hiss - */ - hiss: function() { - this._super.speak('hissssss'); - } -}); - -/** - * @constructor Cat - * @extends Animal - */ -var Cat = Animal.extend({ - - /** - * @method Cat#meow - */ - meow: function() { - this._super.speak('meow'); - }, - - /** - * Mixin a method from another class. - * @name Cat#hiss => Snake#hiss - */ - hiss: Snake.prototype.hiss -}); \ No newline at end of file diff --git a/modules/jsdoc/src/handlers.js b/modules/jsdoc/src/handlers.js index a1a721c9..8103c5c6 100644 --- a/modules/jsdoc/src/handlers.js +++ b/modules/jsdoc/src/handlers.js @@ -1,5 +1,13 @@ -(function() { +/** + @module jsdoc/src/handlers + */ +(function() { + var currentModule = null; + + /** + Attach these event handlers to a particular instance of a parser. + */ exports.attachTo = function(parser) { var jsdoc = {doclet: require('jsdoc/doclet')}; @@ -11,6 +19,9 @@ } addDoclet.call(this, newDoclet); + if (newDoclet.kind === 'module') { + currentModule = newDoclet.longname; + } e.doclet = newDoclet; }); @@ -34,12 +45,22 @@ if (!newDoclet.memberof && e.astnode) { var memberofName; - - if ( /^this\./.test(newDoclet.name) ) { - newDoclet.name = newDoclet.name.replace('this.', ''); - memberofName = this.resolveThis(e.astnode); + + if ( /^(exports|this)(\.|$)/.test(newDoclet.name) ) { + newDoclet.name = newDoclet.name.replace(/^(exports|this)(\.|$)/, ''); + + if (RegExp.$1 === 'exports' && currentModule) { + memberofName = currentModule; + } + else { + memberofName = this.resolveThis(e.astnode); + } + if (memberofName) { - newDoclet.name = memberofName + '#' + newDoclet.name; + if (newDoclet.name) { + newDoclet.name = memberofName + (RegExp.$1 === 'this'? '#' : '.') + newDoclet.name; + } + else { newDoclet.name = memberofName; } } } else { @@ -61,7 +82,9 @@ //parser.on('fileBegin', function(e) { }); - //parser.on('fileComplete', function(e) { }); + parser.on('fileComplete', function(e) { + currentModule = null; + }); function addDoclet(newDoclet) { if (newDoclet) { diff --git a/modules/jsdoc/tag/dictionary/definitions.js b/modules/jsdoc/tag/dictionary/definitions.js index 336b74e1..0ef7f6e6 100644 --- a/modules/jsdoc/tag/dictionary/definitions.js +++ b/modules/jsdoc/tag/dictionary/definitions.js @@ -149,8 +149,10 @@ doclet.addTag('alias', modName); doclet.addTag('kind', 'module'); + doclet.addTag('undocumented'); } - }); + }) + .synonym('defines'); dictionary.defineTag('file', { mustHaveValue: true, diff --git a/test/runner.js b/test/runner.js index 3466ee8e..aba33b2e 100644 --- a/test/runner.js +++ b/test/runner.js @@ -99,6 +99,7 @@ testFile('test/t/cases/constructstag3.js'); testFile('test/t/cases/constructortag.js'); testFile('test/t/cases/copyrighttag.js'); testFile('test/t/cases/deprecatedtag.js'); +testFile('test/t/cases/exports.js'); testFile('test/t/cases/exportstag.js'); testFile('test/t/cases/exportstag2.js'); testFile('test/t/cases/exceptiontag.js');