From a831097cca33e86d80d58efb0e7066bae8de4470 Mon Sep 17 00:00:00 2001 From: Richard Livsey Date: Mon, 30 Nov 2015 17:20:08 +0000 Subject: [PATCH] =?UTF-8?q?Don=E2=80=99t=20de-duplicate=20cards/atoms=20ba?= =?UTF-8?q?sed=20on=20payload?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/js/renderers/mobiledoc/0-3.js | 48 +++++----------------- tests/unit/renderers/mobiledoc/0-3-test.js | 5 ++- 2 files changed, 13 insertions(+), 40 deletions(-) diff --git a/src/js/renderers/mobiledoc/0-3.js b/src/js/renderers/mobiledoc/0-3.js index 64fe5942f..85c572bb4 100644 --- a/src/js/renderers/mobiledoc/0-3.js +++ b/src/js/renderers/mobiledoc/0-3.js @@ -56,16 +56,6 @@ const visitor = { } }; -// NOTE - naive implementation just for discussion -function objectToCacheKey(obj) { - if (!obj) { - return 'none'; - } - - let attributesArray = objectToSortedKVArray(obj); - return attributesArray.join('-'); -} - const postOpcodeCompiler = { openMarker(closeCount, value) { this.markupMarkerIds = []; @@ -92,11 +82,11 @@ const postOpcodeCompiler = { this.sections.push([MOBILEDOC_IMAGE_SECTION_TYPE, url]); }, openCardSection(name, payload) { - const index = this._findOrAddCardTypeIndex(name, payload); + const index = this._addCardTypeIndex(name, payload); this.sections.push([MOBILEDOC_CARD_SECTION_TYPE, index]); }, openAtom(closeCount, name, value, payload) { - const index = this._findOrAddAtomTypeIndex(name, value, payload); + const index = this._addAtomTypeIndex(name, value, payload); this.markupMarkerIds = []; this.markers.push([ MOBILEDOC_ATOM_MARKER_TYPE, @@ -122,33 +112,15 @@ const postOpcodeCompiler = { const index = this._findOrAddMarkerTypeIndex(tagName, attributes); this.markupMarkerIds.push(index); }, - _findOrAddCardTypeIndex(cardName, payload) { - if (!this._cardTypeCache) { this._cardTypeCache = {}; } - const key = `${cardName}-${objectToCacheKey(payload)}`; - - let index = this._cardTypeCache[key]; - if (index === undefined) { - let cardType = [cardName, payload]; - this.cardTypes.push(cardType); - - index = this.cardTypes.length - 1; - this._cardTypeCache[key] = index; - } - return index; + _addCardTypeIndex(cardName, payload) { + let cardType = [cardName, payload]; + this.cardTypes.push(cardType); + return this.cardTypes.length - 1; }, - _findOrAddAtomTypeIndex(atomName, atomValue, payload) { - if (!this._atomTypeCache) { this._atomTypeCache = {}; } - const key = `${atomName}-${atomValue}-${objectToCacheKey(payload)}`; - - let index = this._atomTypeCache[key]; - if (index === undefined) { - let atomType = [atomName, atomValue, payload]; - this.atomTypes.push(atomType); - - index = this.atomTypes.length - 1; - this._atomTypeCache[key] = index; - } - return index; + _addAtomTypeIndex(atomName, atomValue, payload) { + let atomType = [atomName, atomValue, payload]; + this.atomTypes.push(atomType); + return this.atomTypes.length - 1; }, _findOrAddMarkerTypeIndex(tagName, attributesArray) { if (!this._markerTypeCache) { this._markerTypeCache = {}; } diff --git a/tests/unit/renderers/mobiledoc/0-3-test.js b/tests/unit/renderers/mobiledoc/0-3-test.js index c573a9f41..b1f91ead4 100644 --- a/tests/unit/renderers/mobiledoc/0-3-test.js +++ b/tests/unit/renderers/mobiledoc/0-3-test.js @@ -231,12 +231,13 @@ test('renders a post with multiple cards with identical payloads', (assert) => { version: MOBILEDOC_VERSION, atoms: [], cards: [ - [cardName, payload1] + [cardName, payload1], + [cardName, payload2] ], markups: [], sections: [ [10, 0], - [10, 0] + [10, 1] ] }); });