AttributeManager: Simplify logic
parent
e3d32a26b6
commit
d40d59d9eb
|
@ -68,10 +68,7 @@ AttributeManager.prototype = _(AttributeManager.prototype).extend({
|
||||||
// see https://github.com/ether/etherpad-lite/issues/2772
|
// see https://github.com/ether/etherpad-lite/issues/2772
|
||||||
let allChangesets;
|
let allChangesets;
|
||||||
for (let row = start[0]; row <= end[0]; row++) {
|
for (let row = start[0]; row <= end[0]; row++) {
|
||||||
const rowRange = this._findRowRange(row, start, end);
|
const [startCol, endCol] = this._findRowRange(row, start, end);
|
||||||
const startCol = rowRange[0];
|
|
||||||
const endCol = rowRange[1];
|
|
||||||
|
|
||||||
const rowChangeset = this._setAttributesOnRangeByLine(row, startCol, endCol, attribs);
|
const rowChangeset = this._setAttributesOnRangeByLine(row, startCol, endCol, attribs);
|
||||||
|
|
||||||
// compose changesets of all rows into a single changeset
|
// compose changesets of all rows into a single changeset
|
||||||
|
@ -89,26 +86,12 @@ AttributeManager.prototype = _(AttributeManager.prototype).extend({
|
||||||
},
|
},
|
||||||
|
|
||||||
_findRowRange(row, start, end) {
|
_findRowRange(row, start, end) {
|
||||||
let startCol, endCol;
|
// Subtract 1 for the end-of-line '\n' (it is never selected).
|
||||||
|
const lineLength =
|
||||||
const startLineOffset = this.rep.lines.offsetOfIndex(row);
|
this.rep.lines.offsetOfIndex(row + 1) - this.rep.lines.offsetOfIndex(row) - 1;
|
||||||
const endLineOffset = this.rep.lines.offsetOfIndex(row + 1);
|
const markerWidth = this.lineHasMarker(row) ? 1 : 0;
|
||||||
const lineLength = endLineOffset - startLineOffset;
|
const startCol = row === start[0] ? start[1] : markerWidth;
|
||||||
|
const endCol = row === end[0] ? end[1] : lineLength;
|
||||||
// find column where range on this row starts
|
|
||||||
if (row === start[0]) { // are we on the first row of range?
|
|
||||||
startCol = start[1];
|
|
||||||
} else {
|
|
||||||
startCol = this.lineHasMarker(row) ? 1 : 0; // remove "*" used as line marker
|
|
||||||
}
|
|
||||||
|
|
||||||
// find column where range on this row ends
|
|
||||||
if (row === end[0]) { // are we on the last row of range?
|
|
||||||
endCol = end[1]; // if so, get the end of range, not end of row
|
|
||||||
} else {
|
|
||||||
endCol = lineLength - 1; // remove "\n"
|
|
||||||
}
|
|
||||||
|
|
||||||
return [startCol, endCol];
|
return [startCol, endCol];
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue