Some Linkify refactoring

This commit is contained in:
Zixaphir 2013-08-17 02:40:00 -07:00
parent 36b2c78281
commit 8429c60d30
4 changed files with 58 additions and 64 deletions

View File

@ -1,5 +1,5 @@
/*
* 4chan X - Version 1.2.32 - 2013-08-16
* 4chan X - Version 1.2.32 - 2013-08-17
*
* Licensed under the MIT license.
* https://github.com/seaweedchan/4chan-x/blob/master/LICENSE

View File

@ -19,7 +19,7 @@
// @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAgMAAAAqbBEUAAAACVBMVEUAAGcAAABmzDNZt9VtAAAAAXRSTlMAQObYZgAAAHFJREFUKFOt0LENACEIBdBv4Qju4wgWanEj3D6OcIVMKaitYHEU/jwTCQj8W75kiVCSBvdQ5/AvfVHBin11BgdRq3ysBgfwBDRrj3MCIA+oAQaku/Q1cNctrAmyDl577tOThYt/Y1RBM4DgOHzM0HFTAyLukH/cmRnqAAAAAElFTkSuQmCC
// ==/UserScript==
/*
* 4chan X - Version 1.2.32 - 2013-08-16
* 4chan X - Version 1.2.32 - 2013-08-17
*
* Licensed under the MIT license.
* https://github.com/seaweedchan/4chan-x/blob/master/LICENSE
@ -4432,7 +4432,7 @@
});
},
node: function() {
var data, el, end, endNode, i, index, items, length, link, links, node, range, result, saved, snapshot, space, test, _i, _len, _ref;
var data, el, end, endNode, i, index, items, length, link, links, node, result, saved, snapshot, space, test, word, _i, _len, _ref;
if (this.isClone) {
if (Conf['Embedding']) {
@ -4460,47 +4460,44 @@
while (result = test.exec(data)) {
index = result.index;
endNode = node;
if ((length = index + result[0].length) === data.length) {
word = result[0];
if ((length = index + word.length) === data.length) {
test.lastIndex = 0;
while ((saved = snapshot.snapshotItem(i++))) {
if (saved.nodeName === 'BR') {
break;
}
endNode = saved;
length = saved.data.length;
if (end = space.exec(saved.data)) {
data = saved.data;
word += data;
length = data.length;
if (end = space.exec(data)) {
test.lastIndex = length = end.index;
i--;
break;
}
}
if (length === endNode.data.length) {
test.lastIndex = 0;
}
range = Linkify.makeRange(node, endNode, index, length);
if (link = Linkify.regString.exec(range.toString())) {
links.push(range);
}
}
if (Linkify.regString.exec(word)) {
links.push(Linkify.makeRange(node, endNode, index, length));
}
if (!(test.lastIndex || node === endNode)) {
break;
} else {
if (link = Linkify.regString.exec(result[0])) {
range = Linkify.makeRange(node, node, index, length);
links.push(range);
}
}
}
}
_ref = links.reverse();
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
range = _ref[_i];
this.nodes.links.push(Linkify.makeLink(range, this));
link = _ref[_i];
this.nodes.links.push(Linkify.makeLink(link, this));
}
if (!(Conf['Embedding'] || Conf['Link Title'])) {
return;
}
items = this.nodes.links;
links = this.nodes.links;
i = 0;
while (range = items[i++]) {
if (data = Linkify.services(range)) {
while (link = links[i++]) {
if (data = Linkify.services(link)) {
if (Conf['Embedding']) {
Linkify.embed(data);
}

View File

@ -1,6 +1,6 @@
// Generated by CoffeeScript
/*
* 4chan X - Version 1.2.32 - 2013-08-16
* 4chan X - Version 1.2.32 - 2013-08-17
*
* Licensed under the MIT license.
* https://github.com/seaweedchan/4chan-x/blob/master/LICENSE
@ -4441,7 +4441,7 @@
});
},
node: function() {
var data, el, end, endNode, i, index, items, length, link, links, node, range, result, saved, snapshot, space, test, _i, _len, _ref;
var data, el, end, endNode, i, index, items, length, link, links, node, result, saved, snapshot, space, test, word, _i, _len, _ref;
if (this.isClone) {
if (Conf['Embedding']) {
@ -4469,47 +4469,44 @@
while (result = test.exec(data)) {
index = result.index;
endNode = node;
if ((length = index + result[0].length) === data.length) {
word = result[0];
if ((length = index + word.length) === data.length) {
test.lastIndex = 0;
while ((saved = snapshot.snapshotItem(i++))) {
if (saved.nodeName === 'BR') {
break;
}
endNode = saved;
length = saved.data.length;
if (end = space.exec(saved.data)) {
data = saved.data;
word += data;
length = data.length;
if (end = space.exec(data)) {
test.lastIndex = length = end.index;
i--;
break;
}
}
if (length === endNode.data.length) {
test.lastIndex = 0;
}
range = Linkify.makeRange(node, endNode, index, length);
if (link = Linkify.regString.exec(range.toString())) {
links.push(range);
}
}
if (Linkify.regString.exec(word)) {
links.push(Linkify.makeRange(node, endNode, index, length));
}
if (!(test.lastIndex || node === endNode)) {
break;
} else {
if (link = Linkify.regString.exec(result[0])) {
range = Linkify.makeRange(node, node, index, length);
links.push(range);
}
}
}
}
_ref = links.reverse();
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
range = _ref[_i];
this.nodes.links.push(Linkify.makeLink(range, this));
link = _ref[_i];
this.nodes.links.push(Linkify.makeLink(link, this));
}
if (!(Conf['Embedding'] || Conf['Link Title'])) {
return;
}
items = this.nodes.links;
links = this.nodes.links;
i = 0;
while (range = items[i++]) {
if (data = Linkify.services(range)) {
while (link = links[i++]) {
if (data = Linkify.services(link)) {
if (Conf['Embedding']) {
Linkify.embed(data);
}

View File

@ -16,7 +16,7 @@ Linkify =
|
# IPv4 Addresses
[\d]{1,3}\.[\d]{1,3}\.[\d]{1,3}\.[\d]{1,3}
|
|
# E-mails
[-\w\d.@]+@[a-z\d.-]+\.[a-z\d]
)///i
@ -55,40 +55,40 @@ Linkify =
while result = test.exec data
{index} = result
endNode = node
word = result[0]
# End of node, not necessarily end of space-delimited string
if (length = index + result[0].length) is data.length
if (length = index + word.length) is data.length
test.lastIndex = 0
while (saved = snapshot.snapshotItem i++)
break if saved.nodeName is 'BR'
if saved.nodeName is 'BR'
break
endNode = saved
{length} = saved.data
endNode = saved
{data} = saved
word += data
{length} = data
if end = space.exec saved.data
if end = space.exec data
# Set our snapshot and regex to start on this node at this position when the loop resumes
test.lastIndex = length = end.index
i--
break
test.lastIndex = 0 if length is endNode.data.length
range = Linkify.makeRange node, endNode, index, length
links.push range if link = Linkify.regString.exec range.toString()
break
if Linkify.regString.exec word
links.push Linkify.makeRange node, endNode, index, length
else
if link = Linkify.regString.exec result[0]
range = Linkify.makeRange node, node, index, length
links.push range
break unless test.lastIndex or node is endNode
for range in links.reverse()
@nodes.links.push Linkify.makeLink range, @
for link in links.reverse()
@nodes.links.push Linkify.makeLink link, @
return unless Conf['Embedding'] or Conf['Link Title']
items = @nodes.links
{links} = @nodes
i = 0
while range = items[i++]
if data = Linkify.services range
while link = links[i++]
if data = Linkify.services link
Linkify.embed data if Conf['Embedding']
Linkify.title data if Conf['Link Title']