Esanders has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/161978

Change subject: Make newFromTranslatedRange a method (translate)
......................................................................

Make newFromTranslatedRange a method (translate)

For consistency we use methods for range modification (e.g. flip, truncate)

Change-Id: I5d3596b40c9943bc0b037074a065d4f719bb1405
---
M src/dm/ve.dm.DocumentSynchronizer.js
M src/ui/actions/ve.ui.IndentationAction.js
M src/ve.Range.js
M tests/ve.Range.test.js
4 files changed, 20 insertions(+), 22 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/VisualEditor/VisualEditor 
refs/changes/78/161978/1

diff --git a/src/dm/ve.dm.DocumentSynchronizer.js 
b/src/dm/ve.dm.DocumentSynchronizer.js
index 3d13b72..7e35791 100644
--- a/src/dm/ve.dm.DocumentSynchronizer.js
+++ b/src/dm/ve.dm.DocumentSynchronizer.js
@@ -58,7 +58,7 @@
 ve.dm.DocumentSynchronizer.synchronizers.annotation = function ( action ) {
        // Queue events for all leaf nodes covered by the range
        var i,
-               adjustedRange = ve.Range.newFromTranslatedRange( action.range, 
this.adjustment ),
+               adjustedRange = action.range.translate( this.adjustment ),
                selection = this.document.selectNodes( adjustedRange, 'leaves' 
);
        for ( i = 0; i < selection.length; i++ ) {
                // No tree synchronization needed
@@ -122,7 +122,7 @@
 ve.dm.DocumentSynchronizer.synchronizers.rebuild = function ( action ) {
        var firstNode, parent, index, numNodes,
                // Find the nodes contained by oldRange
-               adjustedOldRange = ve.Range.newFromTranslatedRange( 
action.oldRange, this.adjustment ),
+               adjustedOldRange = action.oldRange.translate( this.adjustment ),
                selection = this.document.selectNodes( adjustedOldRange, 
'siblings' );
 
        // If the document is empty, selection[0].node will be the document (so 
no parent)
diff --git a/src/ui/actions/ve.ui.IndentationAction.js 
b/src/ui/actions/ve.ui.IndentationAction.js
index 1e6bd91..918b7ff 100644
--- a/src/ui/actions/ve.ui.IndentationAction.js
+++ b/src/ui/actions/ve.ui.IndentationAction.js
@@ -165,7 +165,7 @@
        surfaceModel.change( tx );
        selection = tx.translateRange( selection );
        // tx.translateRange( innerListItemRange ) doesn't do what we want
-       innerListItemRange = ve.Range.newFromTranslatedRange( listItemRange, 2 
);
+       innerListItemRange = listItemRange.translate( 2 );
        outerListItemRange = new ve.Range( listItemRange.start, 
listItemRange.end + 2 );
 
        // (2) Merge the listItem into the previous listItem (if there is one)
@@ -242,7 +242,7 @@
                );
                surfaceModel.change( tx );
                // tx.translateRange( listItemRange ) doesn't do what we want
-               listItemRange = ve.Range.newFromTranslatedRange( listItemRange, 
2 );
+               listItemRange = listItemRange.translate( 2 );
        }
        if ( documentModel.data.getData( listItemRange.end ).type !== '/list' ) 
{
                // (1b) listItem is not the last child, split the list after 
listItem
@@ -293,7 +293,7 @@
                        );
                        surfaceModel.change( tx );
                        // tx.translateRange( splitListRange ) doesn't do what 
we want
-                       splitListRange = ve.Range.newFromTranslatedRange( 
splitListRange, 2 );
+                       splitListRange = splitListRange.translate( 2 );
                }
                if ( documentModel.data.getData( splitListRange.end ).type !== 
'/listItem' ) {
                        // (3b) Split parentListItem after list
diff --git a/src/ve.Range.js b/src/ve.Range.js
index 55919cb..32e48d0 100644
--- a/src/ve.Range.js
+++ b/src/ve.Range.js
@@ -50,18 +50,6 @@
 };
 
 /**
- * Create a new range that's a translated version of another.
- *
- * @static
- * @param {ve.Range} range Range to base new range on
- * @param {number} distance Distance to move range by
- * @returns {ve.Range} New translated range
- */
-ve.Range.newFromTranslatedRange = function ( range, distance ) {
-       return new ve.Range( range.from + distance, range.to + distance );
-};
-
-/**
  * Create a range object that covers all of the given ranges.
  *
  * @static
@@ -142,6 +130,16 @@
 };
 
 /**
+ * Get a range that's a translated version of this one.
+ *
+ * @param {number} distance Distance to move range by
+ * @returns {ve.Range} New translated range
+ */
+ve.Range.prototype.translate = function ( distance ) {
+       return new ve.Range( this.from + distance, this.to + distance );
+};
+
+/**
  * Check if two ranges are equal, taking direction into account.
  *
  * @param {ve.Range|null} other
diff --git a/tests/ve.Range.test.js b/tests/ve.Range.test.js
index 22ceebf..06cc74f 100644
--- a/tests/ve.Range.test.js
+++ b/tests/ve.Range.test.js
@@ -44,7 +44,7 @@
 
 } );
 
-QUnit.test( 'Modification (flip, truncate, expand, clone)', 15, function ( 
assert ) {
+QUnit.test( 'Modification (flip, truncate, expand, translate, clone)', 17, 
function ( assert ) {
        var range = new ve.Range( 100, 200 );
 
        assert.equalRange( range.flip(), new ve.Range( 200, 100 ), 'flip 
reverses the range' );
@@ -65,15 +65,15 @@
        assert.equalRange( range.expand( new ve.Range( 50 ) ), new ve.Range( 
50, 200 ), 'non-overlapping expand to left' );
        assert.equalRange( range.expand( new ve.Range( 150, 50 ) ), new 
ve.Range( 50, 200 ), 'backwards overlapping expand to left' );
 
+       assert.equalRange( range.translate( 10 ), new ve.Range( 110, 210 ), 
'translate 10' );
+       assert.equalRange( range.translate( -10 ), new ve.Range( 90, 190 ), 
'translate -10' );
+
        assert.strictEqual( range.flip().expand( new ve.Range( 250 ) 
).isBackwards(), true, 'expands preserves backwards' );
 
 } );
 
-QUnit.test( 'Factory methods & serialization (newFromTranslatedRange, 
newCoveringRange, newFromJSON, toJSON)', 8, function ( assert ) {
+QUnit.test( 'Factory methods & serialization (newCoveringRange, newFromJSON, 
toJSON)', 6, function ( assert ) {
        var range = new ve.Range( 100, 200 );
-
-       assert.equalRange( ve.Range.newFromTranslatedRange( range, 10 ), new 
ve.Range( 110, 210 ), 'translate 10' );
-       assert.equalRange( ve.Range.newFromTranslatedRange( range, -10 ), new 
ve.Range( 90, 190 ), 'translate -10' );
 
        assert.equalRange(
                ve.Range.newCoveringRange( [ range, new ve.Range( 150, 250 ) ] 
),

-- 
To view, visit https://gerrit.wikimedia.org/r/161978
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I5d3596b40c9943bc0b037074a065d4f719bb1405
Gerrit-PatchSet: 1
Gerrit-Project: VisualEditor/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Esanders <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to