fix ignoring empty delta
This commit is contained in:
parent
004a19855a
commit
eec012b24e
3 changed files with 15 additions and 5 deletions
|
|
@ -570,7 +570,7 @@ var Document = function(textOrLines) {
|
||||||
this.applyDelta = function(delta, doNotValidate) {
|
this.applyDelta = function(delta, doNotValidate) {
|
||||||
var isInsert = delta.action == "insert";
|
var isInsert = delta.action == "insert";
|
||||||
// An empty range is a NOOP.
|
// An empty range is a NOOP.
|
||||||
if (isInsert ? !delta.lines.length
|
if (isInsert ? delta.lines.length <= 1 && !delta.lines[0]
|
||||||
: !Range.comparePoints(delta.start, delta.end))
|
: !Range.comparePoints(delta.start, delta.end))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -298,6 +298,16 @@ module.exports = {
|
||||||
assert.equal(doc.$lines.length, 1);
|
assert.equal(doc.$lines.length, 1);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
"test: ignore empty delta": function() {
|
||||||
|
var doc = new Document("");
|
||||||
|
doc.on("change", function() {
|
||||||
|
throw "should ignore empty delta";
|
||||||
|
})
|
||||||
|
doc.insert({row: 0, column: 0}, "");
|
||||||
|
doc.insert({row: 1, column: 1}, "");
|
||||||
|
doc.remove({start: {row: 1, column: 1}, end: {row: 1, column: 1}});
|
||||||
|
},
|
||||||
|
|
||||||
"test: inserting huge delta": function() {
|
"test: inserting huge delta": function() {
|
||||||
var doc = new Document("");
|
var doc = new Document("");
|
||||||
var val = "";
|
var val = "";
|
||||||
|
|
|
||||||
|
|
@ -18,11 +18,11 @@ var Mirror = exports.Mirror = function(sender) {
|
||||||
doc.applyDeltas(data);
|
doc.applyDeltas(data);
|
||||||
} else {
|
} else {
|
||||||
for (var i = 0; i < data.length; i += 2) {
|
for (var i = 0; i < data.length; i += 2) {
|
||||||
if (Array.isArray(data[i+1]))
|
if (Array.isArray(data[i+1])) {
|
||||||
var d = {action: "insert", start: data[i], lines: data[i+1]};
|
var d = {action: "insert", start: data[i], lines: data[i+1]};
|
||||||
else
|
} else {
|
||||||
var d = {action: "remove", start: data[i],end: data[i+1]};
|
var d = {action: "remove", start: data[i], end: data[i+1]};
|
||||||
|
}
|
||||||
doc.applyDelta(d, true);
|
doc.applyDelta(d, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue