From e600886532351c18852a9fe5a1386fffb773ba8d Mon Sep 17 00:00:00 2001 From: isaacs Date: Thu, 11 Jul 2013 14:12:02 -0700 Subject: doc: update index builder for new format --- scripts/index-build.js | 91 +++++++++++++++++++++++++------------------------- 1 file changed, 45 insertions(+), 46 deletions(-) (limited to 'scripts') diff --git a/scripts/index-build.js b/scripts/index-build.js index 551bb1d56..56827fcc7 100755 --- a/scripts/index-build.js +++ b/scripts/index-build.js @@ -1,63 +1,62 @@ #!/usr/bin/env node var fs = require("fs") , path = require("path") - , cli = path.resolve(__dirname, "..", "doc", "cli") - , clidocs = null - , api = path.resolve(__dirname, "..", "doc", "api") - , apidocs = null - , readme = path.resolve(__dirname, "..", "README.md") - -fs.readdir(cli, done("cli")) -fs.readdir(api, done("api")) - -function done (which) { return function (er, docs) { - if (er) throw er - docs.sort() - if (which === "api") apidocs = docs - else clidocs = docs - - if (apidocs && clidocs) next() -}} - -function filter (d) { - return d !== "index.md" - && d.charAt(0) !== "." - && d.match(/\.md$/) -} - -function next () { + , root = path.resolve(__dirname, "..") + , glob = require("glob") + , conversion = { "cli": 1, "api": 3, "files": 5, "misc": 7 } + +glob(root + "/{README.md,doc/*/*.md}", function (er, files) { + if (er) + throw er + output(files.map(function (f) { + var b = path.basename(f) + if (b === "README.md") + return [1, b] + if (b === "index.md") + return null + var s = conversion[path.basename(path.dirname(f))] + return [s, f] + }).filter(function (f) { + return f + }).sort(function (a, b) { + return (a[0] === b[0]) + ? ( path.basename(a[1]) === "npm.md" ? -1 + : path.basename(b[1]) === "npm.md" ? 1 + : path.basename(a[1]) === "README.md" ? -1 + : path.basename(b[1]) === "README.md" ? 1 + : a[1] > b[1] ? 1 : -1 ) + : a[0] - b[0] + })) +}) + +return + +function output (files) { console.log( - "npm-index(1) -- Index of all npm documentation\n" + + "npm-index(7) -- Index of all npm documentation\n" + "==============================================\n") - apidocs = apidocs.filter(filter).map(function (d) { - return [3, path.resolve(api, d)] - }) - - clidocs = clidocs.filter(filter).map(function (d) { - return [1, path.resolve(cli, d)] - }) - - writeLine([1, readme]) - - console.log("# Command Line Documentation") - - clidocs.forEach(writeLine) + writeLines(files, 1, "Command Line Documentation") + writeLines(files, 3, "API Documentation") + writeLines(files, 5, "Files") + writeLines(files, 7, "Misc") +} - console.log("# API Documentation") - apidocs.forEach(writeLine) +function writeLines (files, sxn, heading) { + console.log("# %s\n", heading) + files.filter(function (f) { + return f[0] === sxn + }).forEach(writeLine) } + function writeLine (sd) { var sxn = sd[0] , doc = sd[1] , d = path.basename(doc, ".md") - , s = fs.lstatSync(doc) - - if (s.isSymbolicLink()) return - var content = fs.readFileSync(doc, "utf8").split("\n")[0].split("--")[1] + var content = fs.readFileSync(doc, "utf8").split("\n")[0].split("-- ")[1] - console.log("## npm-%s(%d)\n", d, sxn) + console.log("## %s(%d)\n", d, sxn) console.log(content + "\n") } -- cgit v1.2.3