Esanders has uploaded a new change for review.
https://gerrit.wikimedia.org/r/65793
Change subject: Cleanup internalList method names and data stores
......................................................................
Cleanup internalList method names and data stores
Renamed some methods are erase the HTML data after conversion.
Change-Id: Ic7317db2c7693591fda4bea459631981a69003f3
---
M modules/ve/dm/nodes/ve.dm.MWReferenceNode.js
M modules/ve/dm/ve.dm.Converter.js
M modules/ve/dm/ve.dm.InternalList.js
M modules/ve/test/dm/ve.dm.Document.test.js
M modules/ve/test/dm/ve.dm.example.js
5 files changed, 15 insertions(+), 17 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor
refs/changes/93/65793/1
diff --git a/modules/ve/dm/nodes/ve.dm.MWReferenceNode.js
b/modules/ve/dm/nodes/ve.dm.MWReferenceNode.js
index 54198ea..58639bc 100644
--- a/modules/ve/dm/nodes/ve.dm.MWReferenceNode.js
+++ b/modules/ve/dm/nodes/ve.dm.MWReferenceNode.js
@@ -43,7 +43,7 @@
// TODO: should also store and use mw.attrs.group once
available from Parsoid
key = name !== null ? name : ve.getHash( body );
- listIndex = converter.internalList.addItem( key, body );
+ listIndex = converter.internalList.queueItemHtml( key, body );
dataElement = {
'type': this.name,
diff --git a/modules/ve/dm/ve.dm.Converter.js b/modules/ve/dm/ve.dm.Converter.js
index 6f51ae6..89db883 100644
--- a/modules/ve/dm/ve.dm.Converter.js
+++ b/modules/ve/dm/ve.dm.Converter.js
@@ -360,7 +360,7 @@
store,
this.getDataFromDomRecursion( doc.body )
);
- refData = this.internalList.getDataFromDom( this );
+ refData = this.internalList.convertToData( this );
linearData.batchSplice( linearData.getLength(), 0, refData );
// Clear the state
diff --git a/modules/ve/dm/ve.dm.InternalList.js
b/modules/ve/dm/ve.dm.InternalList.js
index db39eaa..21a2aad 100644
--- a/modules/ve/dm/ve.dm.InternalList.js
+++ b/modules/ve/dm/ve.dm.InternalList.js
@@ -35,19 +35,19 @@
/* Methods */
/**
- * Add an item to the list.
+ * Queues up an item's html for parsing later.
*
- * If an item with this key already exists it will be ignored.
+ * If an item with the specified key already exists it will be ignored.
*
* @method
* @param {string} key Item key
- * @param {string} body Item contents
+ * @param {string} html Item contents
* @returns {number} Index of the item in the index-value store, and also the
list
*/
-ve.dm.InternalList.prototype.addItem = function ( key, body ) {
+ve.dm.InternalList.prototype.queueItemHtml = function ( key, html ) {
var index = this.store.indexOfHash( key );
if ( index === null ) {
- index = this.store.index( body, key );
+ index = this.store.index( html, key );
this.itemsHtml.push( index );
}
return index;
@@ -102,16 +102,18 @@
};
/**
- * Gets linear model data for all the stored item's HTML.
+ * Converts stored item HTML into linear data.
*
* Each item is an InternalItem, and they are wrapped in an InternalList.
* If there are no items an empty array is returned.
+ *
+ * Stored HTML is deleted after conversion.
*
* @method
* @param {ve.dm.Converter} converter Converter object
* @returns {Array} Linear model data
*/
-ve.dm.InternalList.prototype.getDataFromDom = function ( converter ) {
+ve.dm.InternalList.prototype.convertToData = function ( converter ) {
var i, length, itemData,
itemsHtml = this.getItemsHtml(), list = [];
@@ -127,6 +129,8 @@
}
list.push( { 'type': '/internalList' } );
}
+ // After conversion we no longer need the HTML
+ this.itemsHtml = null;
return list;
};
@@ -139,7 +143,6 @@
ve.dm.InternalList.prototype.clone = function ( doc ) {
var clone = new this.constructor( doc || this.doc );
clone.store = this.store.clone();
- clone.itemsHtml = this.itemsHtml.slice();
return clone;
};
diff --git a/modules/ve/test/dm/ve.dm.Document.test.js
b/modules/ve/test/dm/ve.dm.Document.test.js
index 0f2caa4..f5a2dbd 100644
--- a/modules/ve/test/dm/ve.dm.Document.test.js
+++ b/modules/ve/test/dm/ve.dm.Document.test.js
@@ -95,7 +95,7 @@
'expectedData': doc.data.slice( 21, 27
).concat( doc.data.slice( 5, 21 ) )
}
];
- QUnit.expect( 8*cases.length );
+ QUnit.expect( 6*cases.length );
for ( i = 0; i < cases.length; i++ ) {
doc = ve.dm.example.createExampleDocument( cases[i].doc );
doc2 = doc.getDocumentSlice( cases[i].arg );
@@ -107,16 +107,11 @@
cases[i].msg + ': store is copied' );
assert.notStrictEqual( doc2.store, doc.store,
cases[i].msg + ': store is a clone, not the same' );
- assert.deepEqual( doc2.internalList.itemsHtml,
doc.internalList.itemsHtml,
- cases[i].msg + ': internal list items are copied' );
- assert.notStrictEqual( doc2.internalList.itemsHtml,
doc.internalList.itemsHtml,
- cases[i].msg + ': internal list items array is cloned,
not the same' );
assert.deepEqual( doc2.internalList.store,
doc.internalList.store,
cases[i].msg + ': internal list store is copied' );
assert.notStrictEqual( doc2.internalList.store,
doc.internalList.store,
cases[i].msg + ': internal list store is a clone, not
the same' );
}
-
} );
QUnit.test( 'getMetadataReplace', 3, function ( assert ) {
diff --git a/modules/ve/test/dm/ve.dm.example.js
b/modules/ve/test/dm/ve.dm.example.js
index 9eecf66..b83ce06 100644
--- a/modules/ve/test/dm/ve.dm.example.js
+++ b/modules/ve/test/dm/ve.dm.example.js
@@ -109,7 +109,7 @@
// HACK internalList isn't populated when creating a document from data
if ( ve.dm.example[name].internalItems ) {
for ( i = 0; i < ve.dm.example[name].internalItems.length; i++
) {
- doc.internalList.addItem(
+ doc.internalList.queueItemHtml(
ve.dm.example[name].internalItems[i].key,
ve.dm.example[name].internalItems[i].body
);
--
To view, visit https://gerrit.wikimedia.org/r/65793
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic7317db2c7693591fda4bea459631981a69003f3
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Esanders <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits