better trim

This commit is contained in:
Zixaphir 2013-08-13 19:20:10 -07:00
parent 8dc14633eb
commit 68e19a0b2e
3 changed files with 24 additions and 50 deletions

View File

@ -4525,7 +4525,7 @@
return range; return range;
}, },
makeLink: function(range) { makeLink: function(range) {
var a, char, len, text, toggle, trim; var a, char, i, len, text, toggle, trim;
text = range.toString(); text = range.toString();
trim = function() { trim = function() {
@ -4535,37 +4535,25 @@
return text = text.slice(0, -1); return text = text.slice(0, -1);
}; };
if (/[(\[{<]/.test(text.charAt(0))) { if (/[(\[{<]/.test(text.charAt(0))) {
if (/[\)\]}>]/.test(text.charAt(text.length - 1))) { text = text.slice(1);
trim();
}
text.slice(1);
if (range.startOffset !== range.startContainer.data.length) { if (range.startOffset !== range.startContainer.data.length) {
range.setStart(range.startContainer, range.startOffset + 1); range.setStart(range.startContainer, range.startOffset + 1);
} }
} }
while (/[\)\]}>,]/.exec(char = text.charAt(text.length - 1))) { while (/[)\]}>.,]/.test(char = text.charAt((len = text.length) - 1))) {
if (char === ',') { if (/[.,]/.test(char)) {
trim(); trim();
continue; continue;
} }
len = text.length; i = 0;
toggle = false;
while (i < len) { while (i < len) {
toggle = false; if (/[()\[\]{}<>]/.test(text[i++])) {
switch (text[i++]) { toggle = !toggle;
case '(':
case ')':
case '[':
case ']':
case '{':
case '}':
case '<':
case '>':
toggle = !toggle;
} }
} }
if (toggle) { if (toggle) {
trim(); trim();
continue;
} }
break; break;
} }

View File

@ -4531,7 +4531,7 @@
return range; return range;
}, },
makeLink: function(range) { makeLink: function(range) {
var a, char, len, text, toggle, trim; var a, char, i, len, text, toggle, trim;
text = range.toString(); text = range.toString();
trim = function() { trim = function() {
@ -4541,37 +4541,25 @@
return text = text.slice(0, -1); return text = text.slice(0, -1);
}; };
if (/[(\[{<]/.test(text.charAt(0))) { if (/[(\[{<]/.test(text.charAt(0))) {
if (/[\)\]}>]/.test(text.charAt(text.length - 1))) { text = text.slice(1);
trim();
}
text.slice(1);
if (range.startOffset !== range.startContainer.data.length) { if (range.startOffset !== range.startContainer.data.length) {
range.setStart(range.startContainer, range.startOffset + 1); range.setStart(range.startContainer, range.startOffset + 1);
} }
} }
while (/[\)\]}>,]/.exec(char = text.charAt(text.length - 1))) { while (/[)\]}>.,]/.test(char = text.charAt((len = text.length) - 1))) {
if (char === ',') { if (/[.,]/.test(char)) {
trim(); trim();
continue; continue;
} }
len = text.length; i = 0;
toggle = false;
while (i < len) { while (i < len) {
toggle = false; if (/[()\[\]{}<>]/.test(text[i++])) {
switch (text[i++]) { toggle = !toggle;
case '(':
case ')':
case '[':
case ']':
case '{':
case '}':
case '<':
case '>':
toggle = !toggle;
} }
} }
if (toggle) { if (toggle) {
trim(); trim();
continue;
} }
break; break;
} }

View File

@ -110,25 +110,23 @@ Linkify =
range.setEnd range.endContainer, range.endOffset - 1 unless range.endOffset < 1 range.setEnd range.endContainer, range.endOffset - 1 unless range.endOffset < 1
text = text.slice 0, -1 text = text.slice 0, -1
# Clean brackets, hanging commas # Clean leading brackets
if /[(\[{<]/.test text.charAt 0 if /[(\[{<]/.test text.charAt 0
trim() if /[\)\]}>]/.test text.charAt text.length - 1 text = text.slice 1
text.slice 1
unless range.startOffset is range.startContainer.data.length unless range.startOffset is range.startContainer.data.length
range.setStart range.startContainer, range.startOffset + 1 range.setStart range.startContainer, range.startOffset + 1
while /[\)\]}>,]/.exec char = text.charAt text.length - 1 # Clean hanging brackets, commas, periods
if char is ',' while /[)\]}>.,]/.test char = text.charAt (len = text.length) - 1
if /[.,]/.test char
trim() trim()
continue continue
len = text.length i = 0
toggle = false
while i < len while i < len
toggle = false if /[()\[\]{}<>]/.test text[i++] then toggle = !toggle
switch text[i++]
when '(', ')', '[', ']', '{', '}', '<', '>' then toggle = !toggle
if toggle if toggle
trim() trim()
continue
break break
text = text =