diff --git a/bin/docdown b/bin/docdown index faab52d..6121116 100755 --- a/bin/docdown +++ b/bin/docdown @@ -69,12 +69,12 @@ if ( 'Usage:', ' docdown inputFile.js outputFile.md [options]', 'Options:', - ' lang="js" The language indicator for code blocks.', - ' sort=true|false Specify whether entries are sorted.', - ' style="default|github" The hash style for links.', - ' title="title" The documentation title.', - ' toc="categories|properties" The table of contents organization style.', - ' url="url" The source URL.' + ' lang="js" The language indicator for code blocks.', + ' sort=true|false Specify whether entries are sorted.', + ' style="default|github" The hash style for links.', + ' title="title" The documentation title.', + ' toc="categories|properties|none" The table of contents organization style.', + ' url="url" The source URL.' ].join('\n')); process.exit(1); } diff --git a/lib/generator.js b/lib/generator.js index 832e846..949f148 100644 --- a/lib/generator.js +++ b/lib/generator.js @@ -95,6 +95,7 @@ function makeAnchor(href, text) { */ function generateDoc(source, options) { var api = [], + noTOC = options.toc == 'none', byCategories = options.toc == 'categories', entries = getEntries(source), organized = {}, @@ -294,57 +295,61 @@ function generateDoc(source, options) { else { tocGroups.sort(util.compareNatural); } - // Start markdown for TOC categories. - var tocMarkdown = ['\n']; - _.each(tocGroups, function(group) { - tocMarkdown.push( - '\n', - '## `' + group + '`' - ); - - if (sortEntries && organized[group]) { - // Sort the TOC groups. - organized[group].sort(function(value, other) { - var valMember = value.getMembers(0), - othMember = other.getMembers(0); - - return util.compareNatural( - (valMember ? (valMember + getSeparator(value)) : '') + value.getName(), - (othMember ? (othMember + getSeparator(other)) : '') + other.getName() - ); - }); - } - // Add TOC entries for each category. - _.each(organized[group], function(entry) { - var member = entry.getMembers(0) || '', - name = entry.getName(), - sep = getSeparator(entry), - title = escape((member ? (member + sep) : '') + name); - - if (entry.isAlias()) { - // An alias has a more complex html structure. - var owner = entry.getOwner(); - tocMarkdown.push( - '* `' + - title + '` -> `' + owner.getName() + '`' + - '' - ); - } else { - // Add a simple TOC entry. - tocMarkdown.push( - '* ' + - makeAnchor( - '#' + entry.getHash(style), - '`' + title + '`' - ) - ); + + var tocMarkdown = []; + if (!noTOC) { + // Start markdown for TOC categories. + tocMarkdown = ['\n']; + _.each(tocGroups, function(group) { + tocMarkdown.push( + '\n', + '## `' + group + '`' + ); + + if (sortEntries && organized[group]) { + // Sort the TOC groups. + organized[group].sort(function(value, other) { + var valMember = value.getMembers(0), + othMember = other.getMembers(0); + + return util.compareNatural( + (valMember ? (valMember + getSeparator(value)) : '') + value.getName(), + (othMember ? (othMember + getSeparator(other)) : '') + other.getName() + ); + }); } + // Add TOC entries for each category. + _.each(organized[group], function(entry) { + var member = entry.getMembers(0) || '', + name = entry.getName(), + sep = getSeparator(entry), + title = escape((member ? (member + sep) : '') + name); + + if (entry.isAlias()) { + // An alias has a more complex html structure. + var owner = entry.getOwner(); + tocMarkdown.push( + '* `' + + title + '` -> `' + owner.getName() + '`' + + '' + ); + } else { + // Add a simple TOC entry. + tocMarkdown.push( + '* ' + + makeAnchor( + '#' + entry.getHash(style), + '`' + title + '`' + ) + ); + } + }); + tocMarkdown.push('\n\n'); }); - tocMarkdown.push('\n\n'); - }); - // End markdown for the TOC. - tocMarkdown.push('\n'); + // End markdown for the TOC. + tocMarkdown.push('\n'); + } var docMarkdown = ['# '+ options.title + '\n']; push.apply(docMarkdown, tocMarkdown); @@ -355,7 +360,10 @@ function generateDoc(source, options) { if (byCategories && !reSpecialCategory.test(group)) { var groupName = '“' + group + '” Methods'; } - docMarkdown.push('## `' + (groupName || group) + '`'); + if (!noTOC) { + docMarkdown.push('## `' + (groupName || group) + '`'); + } + _.each(organized[group], function(entry) { if (entry.markdown) { docMarkdown.push(entry.markdown);