tools: convert addon-verify to remark
This is the last use of the remark *module*. tools/remark-cli and tools/remark-preset-lint-node remain. PR-URL: https://github.com/nodejs/node/pull/21978 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
parent
045b07d518
commit
3ffd6892c4
@ -1,28 +1,38 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const { mkdir, readFileSync, writeFile } = require('fs');
|
// doc/api/addons.md has a bunch of code. Extract it for verification
|
||||||
|
// that the C++ code compiles and the js code runs.
|
||||||
|
// Add .gyp files which will be used to compile the C++ code.
|
||||||
|
// Modify the require paths in the js code to pull from the build tree.
|
||||||
|
// Triggered from the build-addons target in the Makefile and vcbuild.bat.
|
||||||
|
|
||||||
|
const { mkdir, writeFile } = require('fs');
|
||||||
const { resolve } = require('path');
|
const { resolve } = require('path');
|
||||||
const { lexer } = require('marked');
|
const vfile = require('to-vfile');
|
||||||
|
const unified = require('unified');
|
||||||
|
const remarkParse = require('remark-parse');
|
||||||
|
|
||||||
const rootDir = resolve(__dirname, '..', '..');
|
const rootDir = resolve(__dirname, '..', '..');
|
||||||
const doc = resolve(rootDir, 'doc', 'api', 'addons.md');
|
const doc = resolve(rootDir, 'doc', 'api', 'addons.md');
|
||||||
const verifyDir = resolve(rootDir, 'test', 'addons');
|
const verifyDir = resolve(rootDir, 'test', 'addons');
|
||||||
|
|
||||||
const tokens = lexer(readFileSync(doc, 'utf8'));
|
const file = vfile.readSync(doc, 'utf8');
|
||||||
|
const tree = unified().use(remarkParse).parse(file);
|
||||||
const addons = {};
|
const addons = {};
|
||||||
let id = 0;
|
let id = 0;
|
||||||
let currentHeader;
|
let currentHeader;
|
||||||
|
|
||||||
const validNames = /^\/\/\s+(.*\.(?:cc|h|js))[\r\n]/;
|
const validNames = /^\/\/\s+(.*\.(?:cc|h|js))[\r\n]/;
|
||||||
tokens.forEach(({ type, text }) => {
|
tree.children.forEach((node) => {
|
||||||
if (type === 'heading') {
|
if (node.type === 'heading') {
|
||||||
currentHeader = text;
|
currentHeader = file.contents.slice(
|
||||||
|
node.children[0].position.start.offset,
|
||||||
|
node.position.end.offset);
|
||||||
addons[currentHeader] = { files: {} };
|
addons[currentHeader] = { files: {} };
|
||||||
}
|
} else if (node.type === 'code') {
|
||||||
if (type === 'code') {
|
const match = node.value.match(validNames);
|
||||||
const match = text.match(validNames);
|
|
||||||
if (match !== null) {
|
if (match !== null) {
|
||||||
addons[currentHeader].files[match[1]] = text;
|
addons[currentHeader].files[match[1]] = node.value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
14
tools/doc/package-lock.json
generated
14
tools/doc/package-lock.json
generated
@ -339,11 +339,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-0.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-0.4.0.tgz",
|
||||||
"integrity": "sha1-iQwsGzv+g/sA5BKbjkz+ZFJw+dE="
|
"integrity": "sha1-iQwsGzv+g/sA5BKbjkz+ZFJw+dE="
|
||||||
},
|
},
|
||||||
"marked": {
|
|
||||||
"version": "0.4.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/marked/-/marked-0.4.0.tgz",
|
|
||||||
"integrity": "sha512-tMsdNBgOsrUophCAFQl0XPe6Zqk/uy9gnue+jIIKhykO51hxyu6uNx7zBPy0+y/WKYVZZMspV9YeXLNdKk+iYw=="
|
|
||||||
},
|
|
||||||
"mdast-util-definitions": {
|
"mdast-util-definitions": {
|
||||||
"version": "1.2.2",
|
"version": "1.2.2",
|
||||||
"resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-1.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-1.2.2.tgz",
|
||||||
@ -591,6 +586,15 @@
|
|||||||
"is-hexadecimal": "^1.0.0"
|
"is-hexadecimal": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"to-vfile": {
|
||||||
|
"version": "5.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-5.0.0.tgz",
|
||||||
|
"integrity": "sha512-sUeBtb4i09pNIzPtl/PMW20Xfe/NK82oV0IehtmoX/+PhIdvc6JHMRnmC4fjCIcy0LOwcNqB8iRMtTBzXHVbng==",
|
||||||
|
"requires": {
|
||||||
|
"is-buffer": "^2.0.0",
|
||||||
|
"vfile": "^3.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"trim": {
|
"trim": {
|
||||||
"version": "0.0.1",
|
"version": "0.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz",
|
||||||
|
@ -7,12 +7,12 @@
|
|||||||
"node": ">=6"
|
"node": ">=6"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"marked": "^0.4.0",
|
|
||||||
"rehype-raw": "^2.0.0",
|
"rehype-raw": "^2.0.0",
|
||||||
"rehype-stringify": "^3.0.0",
|
"rehype-stringify": "^3.0.0",
|
||||||
"remark-html": "^7.0.0",
|
"remark-html": "^7.0.0",
|
||||||
"remark-parse": "^5.0.0",
|
"remark-parse": "^5.0.0",
|
||||||
"remark-rehype": "^3.0.0",
|
"remark-rehype": "^3.0.0",
|
||||||
|
"to-vfile": "^5.0.0",
|
||||||
"unified": "^7.0.0",
|
"unified": "^7.0.0",
|
||||||
"unist-util-find": "^1.0.1",
|
"unist-util-find": "^1.0.1",
|
||||||
"unist-util-select": "^1.5.0",
|
"unist-util-select": "^1.5.0",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user