From 9564f7a123981e93f11312a12ed84498c1adf54a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Nie=C3=9Fen?= Date: Sat, 8 Sep 2018 11:40:05 +0200 Subject: [PATCH] tools: fix doc tool behavior for version arrays Even though the doc tool supports version arrays in theory, it fails to sort them properly causing the tool to crash. PR-URL: https://github.com/nodejs/node/pull/22766 Reviewed-By: Gus Caplan Reviewed-By: Colin Ihrig Reviewed-By: Vse Mozhet Byt Reviewed-By: Ruben Bridgewater Reviewed-By: James M Snell --- tools/doc/common.js | 2 +- tools/doc/html.js | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/tools/doc/common.js b/tools/doc/common.js index 7d8aefb65d84fd..86daae6cfc6d56 100644 --- a/tools/doc/common.js +++ b/tools/doc/common.js @@ -43,4 +43,4 @@ function extractAndParseYAML(text) { return meta; } -module.exports = { isYAMLBlock, extractAndParseYAML }; +module.exports = { arrify, isYAMLBlock, extractAndParseYAML }; diff --git a/tools/doc/html.js b/tools/doc/html.js index 5babe1c97e679a..c0a94b6534b171 100644 --- a/tools/doc/html.js +++ b/tools/doc/html.js @@ -308,7 +308,9 @@ function parseYAML(text) { .use(htmlStringify) .processSync(change.description).toString(); - result += `${change.version}\n` + + const version = common.arrify(change.version).join(', '); + + result += `${version}\n` + `${description}\n`; }); @@ -326,10 +328,16 @@ function parseYAML(text) { return result; } +function minVersion(a) { + return common.arrify(a).reduce((min, e) => { + return !min || versionSort(min, e) < 0 ? e : min; + }); +} + const numberRe = /^\d*/; function versionSort(a, b) { - a = a.trim(); - b = b.trim(); + a = minVersion(a).trim(); + b = minVersion(b).trim(); let i = 0; // Common prefix length. while (i < a.length && i < b.length && a[i] === b[i]) i++; a = a.substr(i);