1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2026-03-15 13:03:31 +01:00

Simplify Editor.extendRange somewhat.

This commit is contained in:
Kris Maglione
2011-02-01 13:01:13 -05:00
parent b81a7c662f
commit b51269584d

View File

@@ -388,34 +388,32 @@ var Editor = Module("editor", {
}, },
}, { }, {
extendRange: function extendRange(range, forward, re, sameWord) { extendRange: function extendRange(range, forward, re, sameWord) {
// FIXME: This could be so much simpler if I had more sleep. util.dump("\n\n\n");
function advance(positive) { function advance(positive) {
let tmp = range.cloneRange(); let idx = range.endOffset;
while (tmp.endOffset < nodeRange.endOffset) { while (idx < text.length && re.test(text[idx++]) == positive)
tmp.setEnd(tmp.endContainer, tmp.endOffset + 1); range.setEnd(range.endContainer, idx);
if (!re.test(String.slice(tmp, -1)) == positive)
break;
range.setEnd(tmp.endContainer, tmp.endOffset);
}
} }
function retreat(positive) { function retreat(positive) {
let tmp = range.cloneRange(); let idx = range.startOffset;
while (tmp.startOffset > 0) { while (idx > 0 && re.test(text[--idx]) == positive)
tmp.setStart(tmp.startContainer, tmp.startOffset - 1); range.setStart(range.startContainer, idx);
if (re.test(String(tmp)[0]) == positive)
break;
range.setStart(tmp.startContainer, tmp.startOffset);
}
} }
let nodeRange = range.cloneRange(); let nodeRange = range.cloneRange();
nodeRange.selectNodeContents(range.startContainer); nodeRange.selectNodeContents(range.startContainer);
let text = String(nodeRange);
let charge = forward ? advance : retreat; if (forward) {
advance(true);
charge(true); if (!sameWord);
if (!sameWord || !forward) advance(false);
charge(false); }
else {
if (!sameWord)
retreat(false);
retreat(true);
}
return range; return range;
}, },