Cscott has uploaded a new change for review.
https://gerrit.wikimedia.org/r/84438
Change subject: Factor out `ve.dm.Transaction.pushReplaceInternal`.
......................................................................
Factor out `ve.dm.Transaction.pushReplaceInternal`.
This helps us keep the `lengthDifference` and "maybe include metadata"
accounting in one place.
Change-Id: I4d38c1e1f3936679758d04b3f83d0d311fdaa65c
---
M modules/ve/dm/ve.dm.Transaction.js
1 file changed, 30 insertions(+), 12 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor
refs/changes/38/84438/1
diff --git a/modules/ve/dm/ve.dm.Transaction.js
b/modules/ve/dm/ve.dm.Transaction.js
index 25dc08a..3c307e0 100644
--- a/modules/ve/dm/ve.dm.Transaction.js
+++ b/modules/ve/dm/ve.dm.Transaction.js
@@ -891,6 +891,33 @@
};
/**
+ * Add a replace operation (internal helper).
+ *
+ * @private
+ * @method
+ * @param {Array} remove Data removed.
+ * @param {Array} insert Data to insert.
+ * @param {Array|undefined} removeMetadata Metadata removed.
+ * @param {Array} insertMetadata Metadata to insert.
+ */
+ve.dm.Transaction.prototype.pushReplaceInternal = function ( remove, insert,
removeMetadata, insertMetadata ) {
+ if ( remove.length === 0 && insert.length === 0) {
+ return; // no-op
+ }
+ var op = {
+ 'type': 'replace',
+ 'remove': remove,
+ 'insert': insert
+ };
+ if ( removeMetadata !== undefined && insertMetadata !== undefined ) {
+ op.removeMetadata = removeMetadata;
+ op.insertMetadata = insertMetadata;
+ }
+ this.operations.push( op );
+ this.lengthDifference += insert.length - remove.length;
+};
+
+/**
* Add a replace operation, keeping metadata in sync if required.
*
* Note that metadata attached to removed content is moved so that it
@@ -915,7 +942,7 @@
return;
}
- var op, end = this.operations.length - 1,
+ var end = this.operations.length - 1,
lastOp = end >= 0 ? this.operations[end] : null,
penultOp = end >= 1 ? this.operations[ end - 1 ] : null,
range = new ve.Range( offset, offset + removeLength ),
@@ -974,17 +1001,8 @@
throw new Error( 'replace after replaceMetadata not allowed' );
}
- op = {
- 'type': 'replace',
- 'remove': remove,
- 'insert': insert
- };
- if ( insertMetadata !== undefined ) {
- op.removeMetadata = removeMetadata;
- op.insertMetadata = insertMetadata;
- }
- this.operations.push( op );
- this.lengthDifference += insert.length - remove.length;
+ this.pushReplaceInternal( remove, insert, removeMetadata,
insertMetadata );
+
if ( extraMetadata !== undefined ) {
this.pushReplaceMetadata( [], extraMetadata );
}
--
To view, visit https://gerrit.wikimedia.org/r/84438
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I4d38c1e1f3936679758d04b3f83d0d311fdaa65c
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Cscott <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits