summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorVse Mozhet Byt <vsemozhetbyt@gmail.com>2018-03-30 12:28:34 +0300
committerVse Mozhet Byt <vsemozhetbyt@gmail.com>2018-03-30 16:34:27 +0300
commit83d44bee0134e3b8b6b98bf89e1f02981d72adee (patch)
tree6ac76dd013acf0cfae22010cfa59586a54d16449 /tools
parentb88477ef4dc82b2a77c90b5de65efab4cf507d3c (diff)
downloadnode-new-83d44bee0134e3b8b6b98bf89e1f02981d72adee.tar.gz
tools: dry utility function in tools/doc/json.js
Also, move a declaration of unrelated variable closer to its only context. PR-URL: https://github.com/nodejs/node/pull/19692 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Diffstat (limited to 'tools')
-rw-r--r--tools/doc/json.js55
1 files changed, 19 insertions, 36 deletions
diff --git a/tools/doc/json.js b/tools/doc/json.js
index 6eaee8c7fc..87122cea70 100644
--- a/tools/doc/json.js
+++ b/tools/doc/json.js
@@ -323,6 +323,8 @@ function processList(section) {
delete section.list;
}
+const paramExpr = /\((.*)\);?$/;
+
// textRaw = "someobject.someMethod(a[, b=100][, c])"
function parseSignature(text, sig) {
var params = text.match(paramExpr);
@@ -556,42 +558,23 @@ function deepCopy_(src) {
// These parse out the contents of an H# tag.
-const eventExpr = /^Event(?::|\s)+['"]?([^"']+).*$/i;
-const classExpr = /^Class:\s*([^ ]+).*$/i;
-const propExpr = /^[^.]+\.([^ .()]+)\s*$/;
-const braceExpr = /^[^.[]+(\[[^\]]+\])\s*$/;
-const classMethExpr = /^class\s*method\s*:?[^.]+\.([^ .()]+)\([^)]*\)\s*$/i;
-const methExpr = /^(?:[^.]+\.)?([^ .()]+)\([^)]*\)\s*$/;
-const newExpr = /^new ([A-Z][a-zA-Z]+)\([^)]*\)\s*$/;
-var paramExpr = /\((.*)\);?$/;
-
-function newSection(tok) {
- const section = {};
+const headingExpressions = [
+ { type: 'event', re: /^Event(?::|\s)+['"]?([^"']+).*$/i },
+ { type: 'class', re: /^Class:\s*([^ ]+).*$/i },
+ { type: 'property', re: /^[^.[]+(\[[^\]]+\])\s*$/ },
+ { type: 'property', re: /^[^.]+\.([^ .()]+)\s*$/ },
+ { type: 'classMethod', re: /^class\s*method\s*:?[^.]+\.([^ .()]+)\([^)]*\)\s*$/i },
+ { type: 'method', re: /^(?:[^.]+\.)?([^ .()]+)\([^)]*\)\s*$/ },
+ { type: 'ctor', re: /^new ([A-Z][a-zA-Z]+)\([^)]*\)\s*$/ },
+];
+
+function newSection({ text }) {
// Infer the type from the text.
- const text = section.textRaw = tok.text;
- if (text.match(eventExpr)) {
- section.type = 'event';
- section.name = text.replace(eventExpr, '$1');
- } else if (text.match(classExpr)) {
- section.type = 'class';
- section.name = text.replace(classExpr, '$1');
- } else if (text.match(braceExpr)) {
- section.type = 'property';
- section.name = text.replace(braceExpr, '$1');
- } else if (text.match(propExpr)) {
- section.type = 'property';
- section.name = text.replace(propExpr, '$1');
- } else if (text.match(classMethExpr)) {
- section.type = 'classMethod';
- section.name = text.replace(classMethExpr, '$1');
- } else if (text.match(methExpr)) {
- section.type = 'method';
- section.name = text.replace(methExpr, '$1');
- } else if (text.match(newExpr)) {
- section.type = 'ctor';
- section.name = text.replace(newExpr, '$1');
- } else {
- section.name = text;
+ for (const { type, re } of headingExpressions) {
+ const [, name] = text.match(re) || [];
+ if (name) {
+ return { textRaw: text, type, name };
+ }
}
- return section;
+ return { textRaw: text, name: text };
}