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 <esand...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits