From fd391e6755f6552c9786bd285cf55eb506e0b056 Mon Sep 17 00:00:00 2001
From: Gaƫtan Gilbert
Date: Wed, 18 Oct 2017 19:13:39 +0200
Subject: Bugzilla autolink: avoid linking inside links (fix #5974).
---
dev/Coq_Bugzilla_autolink.user.js | 46 ++++++++++++++++++++++++++++++++++-----
1 file changed, 40 insertions(+), 6 deletions(-)
(limited to 'dev')
diff --git a/dev/Coq_Bugzilla_autolink.user.js b/dev/Coq_Bugzilla_autolink.user.js
index 371c5adc00..5ff618a839 100644
--- a/dev/Coq_Bugzilla_autolink.user.js
+++ b/dev/Coq_Bugzilla_autolink.user.js
@@ -10,25 +10,59 @@
var regex = /BZ#(\d+)/g;
var substr = '$&';
-function doNode(node)
+function doTitle(node)
{
node.innerHTML = node.innerHTML.replace(regex,substr);
}
+function filter(node)
+{
+ if (node.nodeName == '#text')
+ {
+ return NodeFilter.FILTER_ACCEPT;
+ }
+ else if(node.nodeName == 'A')
+ {
+ return NodeFilter.FILTER_REJECT;
+ }
+ return NodeFilter.FILTER_SKIP;
+}
var comments = document.getElementsByClassName("comment-body");
-for(var i=0; i 1)
+ {
+ var range = document.createRange();
+ var start = content.search(regex);
+ var end = start + matches[0].length;
+ range.setStart(node, start);
+ range.setEnd(node, end);
+ var linkNode = document.createElement("a");
+ linkNode.href = "https://coq.inria.fr/bugs/show_bug.cgi?id=" + matches[1];
+ range.surroundContents(linkNode);
+
+ //handle multiple matches in one text node
+ doNode(linkNode.parentNode);
+ }
}
}
+for(var i=0; i