diff --git a/builds/4chan-X.user.js b/builds/4chan-X.user.js index aeae57d34..659f6ceab 100644 --- a/builds/4chan-X.user.js +++ b/builds/4chan-X.user.js @@ -4525,7 +4525,7 @@ return range; }, makeLink: function(range) { - var a, char, len, text, toggle, trim; + var a, char, i, len, text, toggle, trim; text = range.toString(); trim = function() { @@ -4535,37 +4535,25 @@ return text = text.slice(0, -1); }; if (/[(\[{<]/.test(text.charAt(0))) { - if (/[\)\]}>]/.test(text.charAt(text.length - 1))) { - trim(); - } - text.slice(1); + text = text.slice(1); if (range.startOffset !== range.startContainer.data.length) { range.setStart(range.startContainer, range.startOffset + 1); } } - while (/[\)\]}>,]/.exec(char = text.charAt(text.length - 1))) { - if (char === ',') { + while (/[)\]}>.,]/.test(char = text.charAt((len = text.length) - 1))) { + if (/[.,]/.test(char)) { trim(); continue; } - len = text.length; + i = 0; + toggle = false; while (i < len) { - toggle = false; - switch (text[i++]) { - case '(': - case ')': - case '[': - case ']': - case '{': - case '}': - case '<': - case '>': - toggle = !toggle; + if (/[()\[\]{}<>]/.test(text[i++])) { + toggle = !toggle; } } if (toggle) { trim(); - continue; } break; } diff --git a/builds/crx/script.js b/builds/crx/script.js index 84ca2204d..d31066840 100644 --- a/builds/crx/script.js +++ b/builds/crx/script.js @@ -4531,7 +4531,7 @@ return range; }, makeLink: function(range) { - var a, char, len, text, toggle, trim; + var a, char, i, len, text, toggle, trim; text = range.toString(); trim = function() { @@ -4541,37 +4541,25 @@ return text = text.slice(0, -1); }; if (/[(\[{<]/.test(text.charAt(0))) { - if (/[\)\]}>]/.test(text.charAt(text.length - 1))) { - trim(); - } - text.slice(1); + text = text.slice(1); if (range.startOffset !== range.startContainer.data.length) { range.setStart(range.startContainer, range.startOffset + 1); } } - while (/[\)\]}>,]/.exec(char = text.charAt(text.length - 1))) { - if (char === ',') { + while (/[)\]}>.,]/.test(char = text.charAt((len = text.length) - 1))) { + if (/[.,]/.test(char)) { trim(); continue; } - len = text.length; + i = 0; + toggle = false; while (i < len) { - toggle = false; - switch (text[i++]) { - case '(': - case ')': - case '[': - case ']': - case '{': - case '}': - case '<': - case '>': - toggle = !toggle; + if (/[()\[\]{}<>]/.test(text[i++])) { + toggle = !toggle; } } if (toggle) { trim(); - continue; } break; } diff --git a/src/Linkification/Linkify.coffee b/src/Linkification/Linkify.coffee index 6be4c648b..0f935cea9 100644 --- a/src/Linkification/Linkify.coffee +++ b/src/Linkification/Linkify.coffee @@ -110,25 +110,23 @@ Linkify = range.setEnd range.endContainer, range.endOffset - 1 unless range.endOffset < 1 text = text.slice 0, -1 - # Clean brackets, hanging commas + # Clean leading brackets if /[(\[{<]/.test text.charAt 0 - trim() if /[\)\]}>]/.test text.charAt text.length - 1 - text.slice 1 + text = text.slice 1 unless range.startOffset is range.startContainer.data.length range.setStart range.startContainer, range.startOffset + 1 - while /[\)\]}>,]/.exec char = text.charAt text.length - 1 - if char is ',' + # Clean hanging brackets, commas, periods + while /[)\]}>.,]/.test char = text.charAt (len = text.length) - 1 + if /[.,]/.test char trim() continue - len = text.length + i = 0 + toggle = false while i < len - toggle = false - switch text[i++] - when '(', ')', '[', ']', '{', '}', '<', '>' then toggle = !toggle + if /[()\[\]{}<>]/.test text[i++] then toggle = !toggle if toggle trim() - continue break text =