From ca61f3bd803691cc75a97d6b77436ba9e0f4199c Mon Sep 17 00:00:00 2001 From: Daniel Bevenius Date: Mon, 3 Jul 2017 06:27:58 +0200 Subject: [PATCH] tools: fix tools/addon-verify.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The current implementation of addon-verify.js is including the code for the "Function arguments" section in test/addons/01_callbacks and there is no directory generated or the "Function arguments section". This continues and leads to the last section, "AtExit", code to be excluded. There is an test/addons/07_atexit_hooks but it contains code from the "Passing wrapped objects around" section. This commit modifies addon-verify to associate headers with code and then iterates over the set and generates the files as a separate step. PR-URL: https://github.com/nodejs/node/pull/14048 Reviewed-By: Michaƫl Zasso --- doc/api/addons.md | 2 +- tools/doc/addon-verify.js | 36 ++++++++++++++++++------------------ 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/doc/api/addons.md b/doc/api/addons.md index f8f1272c72c068..09049e3dbd8477 100644 --- a/doc/api/addons.md +++ b/doc/api/addons.md @@ -1104,7 +1104,7 @@ Test in JavaScript by running: ```js // test.js -const addon = require('./build/Release/addon'); +require('./build/Release/addon'); ``` [bindings]: https://github.com/TooTallNate/node-bindings diff --git a/tools/doc/addon-verify.js b/tools/doc/addon-verify.js index f681b0a90eb2a6..14953be66a6ce3 100644 --- a/tools/doc/addon-verify.js +++ b/tools/doc/addon-verify.js @@ -11,29 +11,29 @@ const verifyDir = path.resolve(rootDir, 'test', 'addons'); const contents = fs.readFileSync(doc).toString(); const tokens = marked.lexer(contents); -let files = null; let id = 0; -// Just to make sure that all examples will be processed -tokens.push({ type: 'heading' }); - -for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; +let currentHeader; +const addons = {}; +tokens.forEach((token) => { if (token.type === 'heading' && token.text) { - const blockName = token.text; - if (files && Object.keys(files).length !== 0) { - verifyFiles(files, - blockName, - console.log.bind(null, 'wrote'), - function(err) { if (err) throw err; }); - } - files = {}; - } else if (token.type === 'code') { + currentHeader = token.text; + addons[currentHeader] = { + files: {} + }; + } + if (token.type === 'code') { var match = token.text.match(/^\/\/\s+(.*\.(?:cc|h|js))[\r\n]/); - if (match === null) - continue; - files[match[1]] = token.text; + if (match !== null) { + addons[currentHeader].files[match[1]] = token.text; + } } +}); +for (var header in addons) { + verifyFiles(addons[header].files, + header, + console.log.bind(null, 'wrote'), + function(err) { if (err) throw err; }); } function once(fn) {