diff --git a/InteractiveHtmlBom/web/ibom.js b/InteractiveHtmlBom/web/ibom.js index 191a4728..ad538c00 100644 --- a/InteractiveHtmlBom/web/ibom.js +++ b/InteractiveHtmlBom/web/ibom.js @@ -390,7 +390,28 @@ function populateBomBody() { } // References td = document.createElement("TD"); - td.innerHTML = highlightFilter(references.map(r => r[0]).join(", ")); + var groupedRefs = []; + references.map(r => { + var match = r[0].match(/^(.*?)([0-9]+)$/); + + if (match) { + return [match[1], parseInt(match[2]), r[0]]; + } else { + return [r[0], NaN, r[0]]; + } + }).forEach(([prefix, num, r]) => { + if (groupedRefs.length > 0) { + var last = groupedRefs[groupedRefs.length-1]; + if (last[0] === prefix && last[1] === num-1) { + last[1] = num; + last[3] = r; + return; + } + } + groupedRefs.push([prefix, num, r, r]); + }); + + td.innerHTML = highlightFilter(groupedRefs.map(([prefix, num, r1, r2]) => (r1 === r2 ? r1 : r1+"-"+r2)).join(", ")); tr.appendChild(td); // Extra fields for (var i in config.extra_fields) {