From cb941ee3facaf994c589a4c94aa5e639688b8de3 Mon Sep 17 00:00:00 2001 From: Zixaphir Date: Tue, 13 Aug 2013 18:16:34 -0700 Subject: [PATCH 1/2] Bracket removal --- builds/4chan-X.user.js | 28 +++++++++++++++++----------- builds/crx/script.js | 28 +++++++++++++++++----------- src/Linkification/Linkify.coffee | 24 +++++++++++++++++------- 3 files changed, 51 insertions(+), 29 deletions(-) diff --git a/builds/4chan-X.user.js b/builds/4chan-X.user.js index ec0d6b402..32b88a925 100644 --- a/builds/4chan-X.user.js +++ b/builds/4chan-X.user.js @@ -4438,7 +4438,7 @@ }); }, node: function() { - var data, el, end, endNode, i, index, items, lIndex, len, length, link, links, node, range, result, saved, snapshot, space, test, text, _i, _len, _ref; + var data, el, end, endNode, i, index, items, length, link, links, node, range, result, saved, snapshot, space, test, text, _i, _len, _ref; if (this.isClone) { if (Conf['Embedding']) { @@ -4484,17 +4484,13 @@ } range = Linkify.makeRange(node, endNode, index, length); if (link = Linkify.regString.exec(text = range.toString())) { - if ((lIndex = link.index) && (len = lIndex + index) < node.data.length) { - range.setStart(node, len); - } - text = text.slice(0, lIndex); - links.push([range, text]); + links.push(range); } break; } else { if (link = Linkify.regString.exec(result[0])) { range = Linkify.makeRange(node, node, index + link.index, length + link.index); - links.push([range, link]); + links.push(range); } } } @@ -4528,11 +4524,21 @@ range.setEnd(endNode, endOffset); return range; }, - makeLink: function(_arg) { - var a, range, text; + makeLink: function(range) { + var a, check, text; - range = _arg[0], text = _arg[1]; - text; + text = range.toString(); + if (/[(\[{<]/.test(text.charAt(0))) { + if (check = /[\)\]}>]/.test(text.charAt(text.length - 1))) { + if (!(range.endOffset < 1)) { + range.setEnd(range.endContainer, range.endOffset - 1); + } + } + text = check ? text.slice(1, -1) : text.slice(1); + if (range.startOffset !== range.startContainer.data.length) { + range.setStart(range.startContainer, range.startOffset + 1); + } + } text = text.contains(':') ? text : (text.contains('@') ? 'mailto:' : 'http://') + text; a = $.el('a', { className: 'linkify', diff --git a/builds/crx/script.js b/builds/crx/script.js index 7e63a60bb..af6b5c139 100644 --- a/builds/crx/script.js +++ b/builds/crx/script.js @@ -4444,7 +4444,7 @@ }); }, node: function() { - var data, el, end, endNode, i, index, items, lIndex, len, length, link, links, node, range, result, saved, snapshot, space, test, text, _i, _len, _ref; + var data, el, end, endNode, i, index, items, length, link, links, node, range, result, saved, snapshot, space, test, text, _i, _len, _ref; if (this.isClone) { if (Conf['Embedding']) { @@ -4490,17 +4490,13 @@ } range = Linkify.makeRange(node, endNode, index, length); if (link = Linkify.regString.exec(text = range.toString())) { - if ((lIndex = link.index) && (len = lIndex + index) < node.data.length) { - range.setStart(node, len); - } - text = text.slice(0, lIndex); - links.push([range, text]); + links.push(range); } break; } else { if (link = Linkify.regString.exec(result[0])) { range = Linkify.makeRange(node, node, index + link.index, length + link.index); - links.push([range, link]); + links.push(range); } } } @@ -4534,11 +4530,21 @@ range.setEnd(endNode, endOffset); return range; }, - makeLink: function(_arg) { - var a, range, text; + makeLink: function(range) { + var a, check, text; - range = _arg[0], text = _arg[1]; - text; + text = range.toString(); + if (/[(\[{<]/.test(text.charAt(0))) { + if (check = /[\)\]}>]/.test(text.charAt(text.length - 1))) { + if (!(range.endOffset < 1)) { + range.setEnd(range.endContainer, range.endOffset - 1); + } + } + text = check ? text.slice(1, -1) : text.slice(1); + if (range.startOffset !== range.startContainer.data.length) { + range.setStart(range.startContainer, range.startOffset + 1); + } + } text = text.contains(':') ? text : (text.contains('@') ? 'mailto:' : 'http://') + text; a = $.el('a', { className: 'linkify', diff --git a/src/Linkification/Linkify.coffee b/src/Linkification/Linkify.coffee index ea237719e..c32544872 100644 --- a/src/Linkification/Linkify.coffee +++ b/src/Linkification/Linkify.coffee @@ -76,16 +76,13 @@ Linkify = test.lastIndex = 0 if length is endNode.data.length range = Linkify.makeRange node, endNode, index, length if link = Linkify.regString.exec text = range.toString() - if (lIndex = link.index) and (len = lIndex + index) < node.data.length - range.setStart node, len - text = text[...lIndex] - links.push [range, text] + links.push range break else if link = Linkify.regString.exec result[0] range = Linkify.makeRange node, node, index + link.index, length + link.index - links.push [range, link] + links.push range for range in links.reverse() @nodes.links.push Linkify.makeLink range, @ @@ -107,8 +104,21 @@ Linkify = range.setEnd endNode, endOffset range - makeLink: ([range, text]) -> - text + makeLink: (range) -> + text = range.toString() + + # Clean brackets + if /[(\[{<]/.test text.charAt 0 + if check = /[\)\]}>]/.test text.charAt text.length - 1 + unless range.endOffset < 1 + range.setEnd range.endContainer, range.endOffset - 1 + text = if check + text.slice 1, -1 + else + text.slice 1 + unless range.startOffset is range.startContainer.data.length + range.setStart range.startContainer, range.startOffset + 1 + text = if text.contains ':' text From cc6265a38f86814efc915a664cf9d4d7b0501fb6 Mon Sep 17 00:00:00 2001 From: Zixaphir Date: Tue, 13 Aug 2013 18:18:13 -0700 Subject: [PATCH 2/2] Shave off a few things --- builds/4chan-X.user.js | 4 ++-- builds/crx/script.js | 4 ++-- src/Linkification/Linkify.coffee | 7 +++---- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/builds/4chan-X.user.js b/builds/4chan-X.user.js index 32b88a925..ccd7fe0e9 100644 --- a/builds/4chan-X.user.js +++ b/builds/4chan-X.user.js @@ -4438,7 +4438,7 @@ }); }, node: function() { - var data, el, end, endNode, i, index, items, length, link, links, node, range, result, saved, snapshot, space, test, text, _i, _len, _ref; + var data, el, end, endNode, i, index, items, length, link, links, node, range, result, saved, snapshot, space, test, _i, _len, _ref; if (this.isClone) { if (Conf['Embedding']) { @@ -4483,7 +4483,7 @@ test.lastIndex = 0; } range = Linkify.makeRange(node, endNode, index, length); - if (link = Linkify.regString.exec(text = range.toString())) { + if (link = Linkify.regString.exec(range.toString())) { links.push(range); } break; diff --git a/builds/crx/script.js b/builds/crx/script.js index af6b5c139..632b22555 100644 --- a/builds/crx/script.js +++ b/builds/crx/script.js @@ -4444,7 +4444,7 @@ }); }, node: function() { - var data, el, end, endNode, i, index, items, length, link, links, node, range, result, saved, snapshot, space, test, text, _i, _len, _ref; + var data, el, end, endNode, i, index, items, length, link, links, node, range, result, saved, snapshot, space, test, _i, _len, _ref; if (this.isClone) { if (Conf['Embedding']) { @@ -4489,7 +4489,7 @@ test.lastIndex = 0; } range = Linkify.makeRange(node, endNode, index, length); - if (link = Linkify.regString.exec(text = range.toString())) { + if (link = Linkify.regString.exec(range.toString())) { links.push(range); } break; diff --git a/src/Linkification/Linkify.coffee b/src/Linkification/Linkify.coffee index c32544872..c2819ac0e 100644 --- a/src/Linkification/Linkify.coffee +++ b/src/Linkification/Linkify.coffee @@ -75,8 +75,7 @@ Linkify = test.lastIndex = 0 if length is endNode.data.length range = Linkify.makeRange node, endNode, index, length - if link = Linkify.regString.exec text = range.toString() - links.push range + links.push range if link = Linkify.regString.exec range.toString() break else @@ -100,8 +99,8 @@ Linkify = makeRange: (startNode, endNode, startOffset, endOffset) -> range = document.createRange(); - range.setStart startNode, startOffset - range.setEnd endNode, endOffset + range.setStart startNode, startOffset + range.setEnd endNode, endOffset range makeLink: (range) ->