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