aboutsummaryrefslogtreecommitdiffstats
path: root/data/lib/preprocessDuplicates.js
diff options
context:
space:
mode:
Diffstat (limited to 'data/lib/preprocessDuplicates.js')
-rw-r--r--data/lib/preprocessDuplicates.js168
1 files changed, 90 insertions, 78 deletions
diff --git a/data/lib/preprocessDuplicates.js b/data/lib/preprocessDuplicates.js
index 44ea5ca..d312fb9 100644
--- a/data/lib/preprocessDuplicates.js
+++ b/data/lib/preprocessDuplicates.js
@@ -36,85 +36,97 @@
* ***** END LICENSE BLOCK ***** */
function preprocessDuplicateMarkers(mainDoc, histDoc) {
- var comments = mainDoc.querySelectorAll(".bz_comment");
- var reDuplicate = /^\s*\*\*\*\s+Bug\s+(\d+)\s+has\s+been\s+marked\s+as\s+a\s+duplicate\s+of\s+this\s+bug.\s+\*\*\*\s*$/i;
- var row = 0;
- var rows = histDoc.querySelectorAll("#bugzilla-body tr");
- for (var i = 1 /* comment 0 can never be a duplicate marker */;
- i < comments.length; ++i) {
- var textHolder = comments[i].querySelector(".bz_comment_text");
- var match = reDuplicate.exec(trimContent(textHolder));
- if (match) {
- // construct the table row to be injected in histDoc
- var bugID = match[1];
- var email = comments[i].querySelector(".bz_comment_user .email")
- .href
- .substr(7);
- var link = textHolder.querySelector("a");
- var title = link.title;
- var time = trimContent(comments[i].querySelector(".bz_comment_time"));
- var what = 'Duplicate';
- var removed = '';
- var number = trimContent(comments[i].querySelector(".bz_comment_number")).
- replace(/[^\d]+/g, '');
- var class_ = '';
- if (/bz_closed/i.test(link.className + " " + link.parentNode.className)) {
- class_ += 'bz_closed ';
- }
- if (link.parentNode.tagName.toLowerCase() == 'i') {
- class_ += 'bztw_unconfirmed ';
- }
- var added = '<a href="show_bug.cgi?id=' + bugID + '" title="' +
- htmlEncode(title) + '" name="c' + number + '" class="' + class_ +
- '">' + bugID + '</a>';
+ var comments = mainDoc.querySelectorAll(".bz_comment");
+ var reDuplicate = /^\s*\*\*\*\s+Bug\s+(\d+)\s+has\s+been\s+marked\s+as\s+a\s+duplicate\s+of\s+this\s+bug.\s+\*\*\*\s*$/i;
+ var row = 0;
+ var rows = histDoc.querySelectorAll("#bugzilla-body tr");
+ for ( var i = 1 /* comment 0 can never be a duplicate marker */; i < comments.length; ++i) {
+ var textHolder = comments[i]
+ .querySelector(".bz_comment_text");
+ var match = reDuplicate.exec(trimContent(textHolder));
+ if (match) {
+ // construct the table row to be injected in histDoc
+ var bugID = match[1];
+ var email = comments[i]
+ .querySelector(".bz_comment_user .email").href
+ .substr(7);
+ var link = textHolder.querySelector("a");
+ var title = link.title;
+ var time = trimContent(comments[i]
+ .querySelector(".bz_comment_time"));
+ var what = 'Duplicate';
+ var removed = '';
+ var number = trimContent(
+ comments[i].querySelector(".bz_comment_number"))
+ .replace(/[^\d]+/g, '');
+ var class_ = '';
+ if (/bz_closed/i.test(link.className + " "
+ + link.parentNode.className)) {
+ class_ += 'bz_closed ';
+ }
+ if (link.parentNode.tagName.toLowerCase() == 'i') {
+ class_ += 'bztw_unconfirmed ';
+ }
+ var added = '<a href="show_bug.cgi?id=' + bugID
+ + '" title="' + htmlEncode(title) + '" name="c'
+ + number + '" class="' + class_ + '">' + bugID
+ + '</a>';
- // inject the table row
- var reachedEnd = false;
- for (; row < rows.length; ++row) {
- var cells = rows[row].querySelectorAll("td");
- if (cells.length != 5)
- continue;
- if (time > trimContent(cells[1])) {
- if (row < rows.length - 1) {
- continue;
- } else {
- reachedEnd = true;
- }
- }
- if (time == trimContent(cells[1])) {
- cells[0].rowSpan++;
- cells[1].rowSpan++;
- var rowContents = [what, removed, added];
- var tr = histDoc.createElement("tr");
- rowContents.forEach(function (cellContents) {
- var td = histDoc.createElement("td");
- td.innerHTML = cellContents;
- tr.appendChild(td);
- });
- if (row != rows.length - 1) {
- rows[row].parentNode.insertBefore(tr, rows[row+1]);
- } else {
- rows[row].parentNode.appendChild(tr);
- }
- } else {
- var rowContents = [email, time, what, removed, added];
- var tr = histDoc.createElement("tr");
- rowContents.forEach(function (cellContents) {
- var td = histDoc.createElement("td");
- td.innerHTML = cellContents;
- tr.appendChild(td);
- });
- if (reachedEnd) {
- rows[row].parentNode.appendChild(tr);
- } else {
- rows[row].parentNode.insertBefore(tr, rows[row]);
- }
- }
- break;
- }
-
- // remove the comment from the main doc
- comments[i].parentNode.removeChild(comments[i]);
+ // inject the table row
+ var reachedEnd = false;
+ for (; row < rows.length; ++row) {
+ var cells = rows[row].querySelectorAll("td");
+ if (cells.length != 5)
+ continue;
+ if (time > trimContent(cells[1])) {
+ if (row < rows.length - 1) {
+ continue;
+ }
+ else {
+ reachedEnd = true;
+ }
+ }
+ if (time == trimContent(cells[1])) {
+ cells[0].rowSpan++;
+ cells[1].rowSpan++;
+ var rowContents = [
+ what, removed, added
+ ];
+ var tr = histDoc.createElement("tr");
+ rowContents.forEach(function(cellContents) {
+ var td = histDoc.createElement("td");
+ td.innerHTML = cellContents;
+ tr.appendChild(td);
+ });
+ if (row != rows.length - 1) {
+ rows[row].parentNode.insertBefore(tr, rows[row + 1]);
+ }
+ else {
+ rows[row].parentNode.appendChild(tr);
+ }
}
+ else {
+ var rowContents = [
+ email, time, what, removed, added
+ ];
+ var tr = histDoc.createElement("tr");
+ rowContents.forEach(function(cellContents) {
+ var td = histDoc.createElement("td");
+ td.innerHTML = cellContents;
+ tr.appendChild(td);
+ });
+ if (reachedEnd) {
+ rows[row].parentNode.appendChild(tr);
+ }
+ else {
+ rows[row].parentNode.insertBefore(tr, rows[row]);
+ }
+ }
+ break;
+ }
+
+ // remove the comment from the main doc
+ comments[i].parentNode.removeChild(comments[i]);
}
+ }
}