diff --git a/main.js b/main.js index 76aa3a8b..5dfe7dd1 100644 --- a/main.js +++ b/main.js @@ -106,8 +106,9 @@ function main() { docs, jsdoc = { opts: { - parser: require('jsdoc/opts/parser') - } + parser: require('jsdoc/opts/parser'), + }, + docset: require('jsdoc/docset') }; try { @@ -163,7 +164,7 @@ function main() { if (typeof publish === 'function') { publish( - docs, + new jsdoc.docset.DocSet(docs), { destination: env.opts.destination } ); } diff --git a/modules/jsdoc/doclet.js b/modules/jsdoc/doclet.js index 19079c2e..4bc9f32b 100644 --- a/modules/jsdoc/doclet.js +++ b/modules/jsdoc/doclet.js @@ -52,7 +52,8 @@ } exports.Doclet.prototype.postProcess = function() { - jsdoc.name.resolve(this); + if (!this.preserveName) { jsdoc.name.resolve(this); } + if (this.name && !this.longname) { this.longname = this.name; } } exports.Doclet.prototype.addTag = function(title, text) { diff --git a/modules/jsdoc/tag/dictionary/definitions.js b/modules/jsdoc/tag/dictionary/definitions.js index b7e749ab..d80e4250 100644 --- a/modules/jsdoc/tag/dictionary/definitions.js +++ b/modules/jsdoc/tag/dictionary/definitions.js @@ -73,6 +73,8 @@ setDocletKindToTitle(doclet, tag); applyNamespace(doclet, tag); + doclet.preserveName = true; + return false; } }) diff --git a/templates/default/publish.js b/templates/default/publish.js index 8d67a052..a295c4d7 100644 --- a/templates/default/publish.js +++ b/templates/default/publish.js @@ -2,7 +2,7 @@ include('templates/lib/janl/mustache.js'); - publish = function(docs, opts) { + publish = function(docSet, opts) { var out = '', templates = { index: readFile(BASEDIR + 'templates/default/tmpl/index.html') @@ -24,15 +24,16 @@ return text.replace(/^\s+|\s+$/g, ''); } - - docs = docs.filter(function(doc) { - return !doc.undocumented; + // remove undocumented symbols from the output + docSet.doclets = docSet.doclets.filter(function(doclet) { + return !doclet.undocumented; }); + // apply template out = Mustache.to_html( templates.index, { - docs: docs, + docs: docSet.doclets, summarize: summarize } ); diff --git a/test/cases/file.js b/test/cases/file.js new file mode 100644 index 00000000..15fb0fc9 --- /dev/null +++ b/test/cases/file.js @@ -0,0 +1,6 @@ +/** + * @overview This is a file doclet. + */ + +function ignoreMe() { +} \ No newline at end of file diff --git a/test/runner.js b/test/runner.js index c2c6985b..3333ff9f 100644 --- a/test/runner.js +++ b/test/runner.js @@ -50,6 +50,8 @@ testFile('test/t/common/dumper.js'); testFile('test/t/jsdoc/opts/parser.js'); testFile('test/t/jsdoc/src/parser.js'); +testFile('test/t/cases/file.js'); + testFile('test/t/cases/virtual.js'); testFile('test/t/cases/objectlit.js'); diff --git a/test/t/cases/file.js b/test/t/cases/file.js new file mode 100644 index 00000000..02f2ec61 --- /dev/null +++ b/test/t/cases/file.js @@ -0,0 +1,19 @@ +(function() { + var srcParser = require('jsdoc/src/parser'), + doclets; + + /**global*/ app = {jsdoc: {parser: new srcParser.Parser()} }; + + require('jsdoc/src/handlers'); + + doclets = app.jsdoc.parser.parse(BASEDIR + 'test/cases/file.js') + + //dump(doclets); + + test('When a file overview tag appears in a doclet.', function() { + var m = /(^file:).*([\/\\]cases[\/\\]file\.js)$/.exec(doclets[0].name); + assert.equal(m.length, 3, 'The name of the doclet should start with file: and should end with the path to the file.'); + assert.equal(doclets[0].name, doclets[0].longname, 'The name and longname should be equal.'); + }); + +})(); \ No newline at end of file