Simplify one of the cases in transaction composition.
This commit is contained in:
parent
f8ba027c38
commit
03cfb01942
|
@ -160,26 +160,27 @@ impl Transaction {
|
||||||
|
|
||||||
//-----------------
|
//-----------------
|
||||||
// Replace, Retain
|
// Replace, Retain
|
||||||
(Some(Replace { .. }), Some(Retain(bc2))) => {
|
(
|
||||||
let op1 = next_op1.unwrap();
|
Some(
|
||||||
|
op1 @ Replace {
|
||||||
|
old: old1,
|
||||||
|
new: new1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Some(Retain(bc2)),
|
||||||
|
) => {
|
||||||
if op1.len_post() < bc2 {
|
if op1.len_post() < bc2 {
|
||||||
trans.push_op(op1, &self.buffer);
|
trans.push_op(op1, &self.buffer);
|
||||||
next_op1 = ops1.next();
|
next_op1 = ops1.next();
|
||||||
next_op2 = Some(Retain(bc2 - op1.len_post()));
|
next_op2 = Some(Retain(bc2 - op1.len_post()));
|
||||||
} else if op1.len_post() > bc2 {
|
} else if op1.len_post() > bc2 {
|
||||||
let (op1a, op1b) = match op1 {
|
let op1a = Op::Replace {
|
||||||
Op::Retain(bc1) => (Op::Retain(bc2), Op::Retain(bc1 - bc2)),
|
old: old1,
|
||||||
Op::Replace { old, new } => (
|
new: (new1.0, new1.0 + bc2),
|
||||||
Op::Replace {
|
};
|
||||||
old: old,
|
let op1b = Op::Replace {
|
||||||
new: (new.0, new.0 + bc2),
|
|
||||||
},
|
|
||||||
Op::Replace {
|
|
||||||
old: (0, 0),
|
old: (0, 0),
|
||||||
new: (new.0 + bc2, new.1),
|
new: (new1.0 + bc2, new1.1),
|
||||||
},
|
|
||||||
),
|
|
||||||
};
|
};
|
||||||
trans.push_op(op1a, &self.buffer);
|
trans.push_op(op1a, &self.buffer);
|
||||||
next_op1 = Some(op1b);
|
next_op1 = Some(op1b);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user