From 7fb5a030172c4f1c8866c643077bfbbb8e04a6ca Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Sat, 30 Jan 2016 10:17:57 -0800 Subject: [PATCH] tools: apply linting to doc tools Apply eslint rules to `tools/doc`. PR-URL: https://github.com/nodejs/node/pull/4973 Reviewed-By: James M Snell Reviewed-By: Jeremiah Senkpiel Reviewed-By: Roman Reiss --- .eslintignore | 1 + Makefile | 2 +- tools/doc/addon-verify.js | 19 +++++++++++++------ tools/doc/generate.js | 10 ++++------ tools/doc/html.js | 20 +++++++++++++++----- tools/doc/json.js | 22 ++++++++++++---------- tools/doc/preprocess.js | 6 ++++-- vcbuild.bat | 2 +- 8 files changed, 51 insertions(+), 31 deletions(-) diff --git a/.eslintignore b/.eslintignore index 26de032..c37ff77 100644 --- a/.eslintignore +++ b/.eslintignore @@ -4,3 +4,4 @@ test/fixtures test/**/node_modules test/disabled test/tmp*/ +tools/doc/node_modules diff --git a/Makefile b/Makefile index c337f00..2e021d5 100644 --- a/Makefile +++ b/Makefile @@ -509,7 +509,7 @@ bench-idle: $(NODE) benchmark/idle_clients.js & jslint: - $(NODE) tools/eslint/bin/eslint.js src lib test tools/eslint-rules \ + $(NODE) tools/eslint/bin/eslint.js lib src test tools/doc tools/eslint-rules \ --rulesdir tools/eslint-rules --quiet CPPLINT_EXCLUDE ?= diff --git a/tools/doc/addon-verify.js b/tools/doc/addon-verify.js index 68c46f0..792fd69 100644 --- a/tools/doc/addon-verify.js +++ b/tools/doc/addon-verify.js @@ -4,12 +4,13 @@ const fs = require('fs'); const path = require('path'); const marked = require('marked'); -const doc = path.resolve(__dirname, '..', '..', 'doc', 'api', 'addons.markdown'); -const verifyDir = path.resolve(__dirname, '..', '..', 'test', 'addons'); +const rootDir = path.resolve(__dirname, '..', '..'); +const doc = path.resolve(rootDir, 'doc', 'api', 'addons.markdown'); +const verifyDir = path.resolve(rootDir, 'test', 'addons'); const contents = fs.readFileSync(doc).toString(); -let tokens = marked.lexer(contents, {}); +const tokens = marked.lexer(contents, {}); let files = null; let blockName; let id = 0; @@ -27,7 +28,7 @@ oldDirs = oldDirs.filter(function(dir) { for (var i = 0; i < tokens.length; i++) { var token = tokens[i]; if (token.type === 'heading' && token.text) { - blockName = token.text + blockName = token.text; if (files && Object.keys(files).length !== 0) { verifyFiles(files, blockName, @@ -60,8 +61,14 @@ function verifyFiles(files, blockName, onprogress, ondone) { return; } - blockName = blockName.toLowerCase().replace(/\s/g, '_').replace(/[^a-z\d_]/g, '') - let dir = path.resolve(verifyDir, `${(++id < 10 ? '0' : '') + id}_${blockName}`); + blockName = blockName + .toLowerCase() + .replace(/\s/g, '_') + .replace(/[^a-z\d_]/g, ''); + const dir = path.resolve( + verifyDir, + `${(++id < 10 ? '0' : '') + id}_${blockName}` + ); files = Object.keys(files).map(function(name) { return { diff --git a/tools/doc/generate.js b/tools/doc/generate.js index 7e47f4b..ff14cbd 100644 --- a/tools/doc/generate.js +++ b/tools/doc/generate.js @@ -1,7 +1,7 @@ +'use strict'; + var processIncludes = require('./preprocess.js'); -var marked = require('marked'); var fs = require('fs'); -var path = require('path'); // parse the args. // Don't use nopt or whatever for this. It's simple enough. @@ -11,7 +11,7 @@ var format = 'json'; var template = null; var inputFile = null; -args.forEach(function (arg) { +args.forEach(function(arg) { if (!arg.match(/^\-\-/)) { inputFile = arg; } else if (arg.match(/^\-\-format=/)) { @@ -19,7 +19,7 @@ args.forEach(function (arg) { } else if (arg.match(/^\-\-template=/)) { template = arg.replace(/^\-\-template=/, ''); } -}) +}); if (!inputFile) { @@ -35,8 +35,6 @@ fs.readFile(inputFile, 'utf8', function(er, input) { }); - - function next(er, input) { if (er) throw er; switch (format) { diff --git a/tools/doc/html.js b/tools/doc/html.js index 9877fb4..2a4bd3f 100644 --- a/tools/doc/html.js +++ b/tools/doc/html.js @@ -1,3 +1,5 @@ +'use strict'; + var fs = require('fs'); var marked = require('marked'); var path = require('path'); @@ -6,7 +8,14 @@ var preprocess = require('./preprocess.js'); module.exports = toHTML; // TODO(chrisdickinson): never stop vomitting / fix this. -var gtocPath = path.resolve(path.join(__dirname, '..', '..', 'doc', 'api', '_toc.markdown')); +var gtocPath = path.resolve(path.join( + __dirname, + '..', + '..', + 'doc', + 'api', + '_toc.markdown' +)); var gtocLoading = null; var gtocData = null; @@ -55,7 +64,10 @@ function loadGtoc(cb) { } function toID(filename) { - return filename.replace('.html', '').replace(/[^\w\-]/g, '-').replace(/-+/g, '-'); + return filename + .replace('.html', '') + .replace(/[^\w\-]/g, '-') + .replace(/-+/g, '-'); } function render(lexed, filename, template, cb) { @@ -85,7 +97,7 @@ function render(lexed, filename, template, cb) { // content has to be the last thing we do with // the lexed tokens, because it's destructive. - content = marked.parser(lexed); + const content = marked.parser(lexed); template = template.replace(/__CONTENT__/g, content); cb(null, template); @@ -173,7 +185,6 @@ function parseAPIHeader(text) { // section is just the first heading function getSection(lexed) { - var section = ''; for (var i = 0, l = lexed.length; i < l; i++) { var tok = lexed[i]; if (tok.type === 'heading') return tok.text; @@ -183,7 +194,6 @@ function getSection(lexed) { function buildToc(lexed, filename, cb) { - var indent = 0; var toc = []; var depth = 0; lexed.forEach(function(tok) { diff --git a/tools/doc/json.js b/tools/doc/json.js index 52f9b22..66eb822 100644 --- a/tools/doc/json.js +++ b/tools/doc/json.js @@ -1,3 +1,5 @@ +'use strict'; + module.exports = doJSON; // Take the lexed input, and return a JSON-encoded object @@ -12,7 +14,7 @@ function doJSON(input, filename, cb) { var current = root; var state = null; var lexed = marked.lexer(input); - lexed.forEach(function (tok) { + lexed.forEach(function(tok) { var type = tok.type; var text = tok.text; @@ -31,7 +33,7 @@ function doJSON(input, filename, cb) { if (type === 'heading' && !text.trim().match(/^example/i)) { if (tok.depth - depth > 1) { - return cb(new Error('Inappropriate heading level\n'+ + return cb(new Error('Inappropriate heading level\n' + JSON.stringify(tok))); } @@ -77,7 +79,7 @@ function doJSON(input, filename, cb) { // // If one of these isnt' found, then anything that comes between // here and the next heading should be parsed as the desc. - var stability + var stability; if (state === 'AFTERHEADING') { if (type === 'code' && (stability = text.match(/^Stability: ([0-5])(?:\s*-\s*)?(.*)$/))) { @@ -125,7 +127,7 @@ function doJSON(input, filename, cb) { finishSection(current, stack[stack.length - 1]); } - return cb(null, root) + return cb(null, root); } @@ -146,7 +148,7 @@ function doJSON(input, filename, cb) { // { type: 'list_item_end' }, // { type: 'list_item_start' }, // { type: 'text', -// text: 'silent: Boolean, whether or not to send output to parent\'s stdio.' }, +// text: 'silent: Boolean, whether to send output to parent\'s stdio.' }, // { type: 'text', text: 'Default: `false`' }, // { type: 'space' }, // { type: 'list_item_end' }, @@ -168,7 +170,7 @@ function doJSON(input, filename, cb) { // desc: 'string arguments passed to worker.' }, // { name: 'silent', // type: 'boolean', -// desc: 'whether or not to send output to parent\'s stdio.', +// desc: 'whether to send output to parent\'s stdio.', // default: 'false' } ] } ] function processList(section) { @@ -231,7 +233,7 @@ function processList(section) { // each item is an argument, unless the name is 'return', // in which case it's the return value. section.signatures = section.signatures || []; - var sig = {} + var sig = {}; section.signatures.push(sig); sig.params = values.filter(function(v) { if (v.name === 'return') { @@ -273,7 +275,7 @@ function parseSignature(text, sig) { params = params[1]; // the [ is irrelevant. ] indicates optionalness. params = params.replace(/\[/g, ''); - params = params.split(/,/) + params = params.split(/,/); params.forEach(function(p, i, _) { p = p.trim(); if (!p) return; @@ -362,7 +364,7 @@ function parseListItem(item) { function finishSection(section, parent) { if (!section || !parent) { - throw new Error('Invalid finishSection call\n'+ + throw new Error('Invalid finishSection call\n' + JSON.stringify(section) + '\n' + JSON.stringify(parent)); } @@ -405,7 +407,7 @@ function finishSection(section, parent) { // properties are a bit special. // their "type" is the type of object, not "property" if (section.properties) { - section.properties.forEach(function (p) { + section.properties.forEach(function(p) { if (p.typeof) p.type = p.typeof; else delete p.type; delete p.typeof; diff --git a/tools/doc/preprocess.js b/tools/doc/preprocess.js index 7ace95a..8f80271 100644 --- a/tools/doc/preprocess.js +++ b/tools/doc/preprocess.js @@ -1,3 +1,5 @@ +'use strict'; + module.exports = preprocess; var path = require('path'); @@ -8,7 +10,7 @@ var includeData = {}; function preprocess(inputFile, input, cb) { input = stripComments(input); - processIncludes(inputFile, input, function (err, data) { + processIncludes(inputFile, input, function(err, data) { if (err) return cb(err); cb(null, data); @@ -47,7 +49,7 @@ function processIncludes(inputFile, input, cb) { if (er) return cb(errState = er); incCount--; includeData[fname] = inc; - input = input.split(include+'\n').join(includeData[fname]+'\n'); + input = input.split(include + '\n').join(includeData[fname] + '\n'); if (incCount === 0) { return cb(null, input); } diff --git a/vcbuild.bat b/vcbuild.bat index 31fc8cd..b515af8 100644 --- a/vcbuild.bat +++ b/vcbuild.bat @@ -251,7 +251,7 @@ goto jslint :jslint if not defined jslint goto exit echo running jslint -%config%\node tools\eslint\bin\eslint.js src lib test tools\eslint-rules --rulesdir tools\eslint-rules --quiet +%config%\node tools\eslint\bin\eslint.js lib src test tools\doc tools\eslint-rules --rulesdir tools\eslint-rules --quiet goto exit :create-msvs-files-failed -- 2.7.4