diff options
author | Vse Mozhet Byt <vsemozhetbyt@gmail.com> | 2018-03-30 12:28:34 +0300 |
---|---|---|
committer | Vse Mozhet Byt <vsemozhetbyt@gmail.com> | 2018-03-30 16:34:27 +0300 |
commit | 83d44bee0134e3b8b6b98bf89e1f02981d72adee (patch) | |
tree | 6ac76dd013acf0cfae22010cfa59586a54d16449 /tools | |
parent | b88477ef4dc82b2a77c90b5de65efab4cf507d3c (diff) | |
download | node-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.js | 55 |
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 }; } |