From 7731668947a14ffe4f52d1636e7f3d3d70985113 Mon Sep 17 00:00:00 2001 From: Matthew Beale Date: Mon, 10 Aug 2015 11:57:04 -0400 Subject: [PATCH] Drop custom list accessors/methods --- src/js/commands/image.js | 2 +- src/js/editor/editor.js | 20 ++- src/js/models/card.js | 5 +- src/js/models/markup-section.js | 28 +---- src/js/models/post.js | 28 +---- src/js/models/render-node.js | 9 -- src/js/parsers/dom.js | 10 +- src/js/parsers/mobiledoc.js | 8 +- src/js/parsers/post.js | 10 +- src/js/parsers/section.js | 8 +- src/js/renderers/editor-dom.js | 12 +- tests/unit/models/markup-section-test.js | 2 +- tests/unit/parsers/dom-test.js | 152 +++++++++++------------ tests/unit/parsers/mobiledoc-test.js | 12 +- tests/unit/renderers/editor-dom-test.js | 62 ++++----- tests/unit/renderers/mobiledoc-test.js | 16 +-- 16 files changed, 167 insertions(+), 217 deletions(-) diff --git a/src/js/commands/image.js b/src/js/commands/image.js index 27bb55db4..659e7594c 100644 --- a/src/js/commands/image.js +++ b/src/js/commands/image.js @@ -13,7 +13,7 @@ export default class ImageCommand extends Command { let sections = this.editor.activeSections; let lastSection = sections[sections.length - 1]; let section = builder.createCardSection('image'); - post.insertSectionAfter(section, lastSection); + post.sections.insertAfter(section, lastSection); sections.forEach(section => section.renderNode.scheduleForRemoval()); this.editor.rerender(); diff --git a/src/js/editor/editor.js b/src/js/editor/editor.js index ef855d41a..277de63ce 100644 --- a/src/js/editor/editor.js +++ b/src/js/editor/editor.js @@ -449,23 +449,23 @@ class Editor { // FIXME rightMarker is not guaranteed to be there let [leftMarker, rightMarker] = newMarkers; - section.insertMarkerAfter(leftMarker, marker); + section.markers.insertAfter(leftMarker, marker); markerRenderNode.scheduleForRemoval(); const newSection = this.builder.createMarkupSection('p'); - newSection.appendMarker(rightMarker); + newSection.markers.append(rightMarker); let nodeForMove = markerRenderNode.next; while (nodeForMove) { nodeForMove.scheduleForRemoval(); let movedMarker = nodeForMove.postNode.clone(); - newSection.appendMarker(movedMarker); + newSection.markers.append(movedMarker); nodeForMove = nodeForMove.next; } const post = this.post; - post.insertSectionAfter(newSection, section); + post.sections.insertAfter(newSection, section); this.rerender(); this.trigger('update'); @@ -657,8 +657,8 @@ class Editor { sectionRenderNode.markClean(); let previousSectionRenderNode = previousSection && previousSection.renderNode; - this.post.insertSectionAfter(section, previousSection); - this._renderTree.node.insertAfter(sectionRenderNode, previousSectionRenderNode); + this.post.sections.insertAfter(section, previousSection); + this._renderTree.node.childNodes.insertAfter(sectionRenderNode, previousSectionRenderNode); } // may cause duplicates to be included @@ -802,16 +802,12 @@ class Editor { let newRenderNode = this._renderTree.buildRenderNode(newSection); let renderNodes = this.cursor.activeSections.map(s => s.renderNode); let lastRenderNode = renderNodes[renderNodes.length-1]; - lastRenderNode.parent.insertAfter(newRenderNode, lastRenderNode); - this.post.insertSectionAfter(newSection, lastRenderNode.postNode); + lastRenderNode.parent.childNodes.insertAfter(newRenderNode, lastRenderNode); + this.post.sections.insertAfter(newSection, lastRenderNode.postNode); renderNodes.forEach(renderNode => renderNode.scheduleForRemoval()); this.trigger('update'); } - removeSection(section) { - this.post.removeSection(section); - } - destroy() { this.removeAllEventListeners(); this.removeAllViews(); diff --git a/src/js/models/card.js b/src/js/models/card.js index 820ac42df..ab2f7aa2b 100644 --- a/src/js/models/card.js +++ b/src/js/models/card.js @@ -1,7 +1,10 @@ +import LinkedItem from "content-kit-editor/utils/linked-item"; + export const CARD_TYPE = 'card-section'; -export default class Card { +export default class Card extends LinkedItem { constructor(name, payload) { + super(); this.name = name; this.payload = payload; this.type = CARD_TYPE; diff --git a/src/js/models/markup-section.js b/src/js/models/markup-section.js index 8067f26ba..1a65588bc 100644 --- a/src/js/models/markup-section.js +++ b/src/js/models/markup-section.js @@ -25,7 +25,7 @@ export default class Section extends LinkedItem { this.type = MARKUP_SECTION_TYPE; this.element = null; - markers.forEach(m => this.appendMarker(m)); + markers.forEach(m => this.markers.append(m)); } set tagName(val) { @@ -59,30 +59,10 @@ export default class Section extends LinkedItem { */ splitMarker(marker, offset, endOffset=marker.length) { const newMarkers = marker.split(offset, endOffset); - this.replaceMarker(marker, newMarkers); + this.markers.splice(marker, 1, newMarkers); return newMarkers; } - replaceMarker(previousMarker, newMarkers=[]) { - this.markers.splice(previousMarker, 1, newMarkers); - } - - prependMarker(marker) { - this.markers.prepend(marker); - } - - appendMarker(marker) { - this.markers.append(marker); - } - - removeMarker(marker) { - this.markers.remove(marker); - } - - insertMarkerAfter(marker, previousMarker) { - this.markers.insertAfter(marker, previousMarker); - } - /** * @return {Array} 2 new sections */ @@ -116,7 +96,9 @@ export default class Section extends LinkedItem { // mutates this by appending the other section's (cloned) markers to it join(otherSection) { - otherSection.markers.forEach(m => this.appendMarker(m.clone())); + otherSection.markers.forEach(m => { + this.markers.append(m.clone()); + }); } /** diff --git a/src/js/models/post.js b/src/js/models/post.js index 3af607595..df5b37f9c 100644 --- a/src/js/models/post.js +++ b/src/js/models/post.js @@ -13,16 +13,6 @@ export default class Post { } }); } - appendSection(section) { - this.sections.append(section); - } - prependSection(section) { - this.sections.prepend(section); - } - replaceSection(section, newSection) { - this.sections.insertAfter(newSection, section); - this.sections.remove(section); - } cutMarkers(markers) { let firstSection = markers[0].section, lastSection = markers[markers.length - 1].section; @@ -31,7 +21,7 @@ export default class Post { let removedSections = [], changedSections = [firstSection, lastSection]; - let previousMarker = markers[0].previousSibling; + let previousMarker = markers[0].prev; markers.forEach(marker => { if (marker.section !== currentSection) { // this marker is in a section we haven't seen yet @@ -43,13 +33,13 @@ export default class Post { } currentSection = marker.section; - currentSection.removeMarker(marker); + currentSection.markers.remove(marker); }); // add a blank marker to any sections that are now empty changedSections.forEach(section => { if (section.isEmpty()) { - section.appendMarker(this.builder.createBlankMarker()); + section.markers.append(this.builder.createBlankMarker()); } }); @@ -89,16 +79,4 @@ export default class Post { } } } - - insertSectionAfter(section, nextSection) { - this.sections.insertAfter(section, nextSection); - } - - removeSection(section) { - this.sections.remove(section); - } - - getPreviousSection(section) { - return section.prev; - } } diff --git a/src/js/models/render-node.js b/src/js/models/render-node.js index 7c82a4760..86b047232 100644 --- a/src/js/models/render-node.js +++ b/src/js/models/render-node.js @@ -40,15 +40,6 @@ export default class RenderNode extends LinkedItem { markClean() { this.isDirty = false; } - appendChild(child) { - this.childNodes.append(child); - } - removeChild(child) { - this.childNodes.remove(child); - } - insertAfter(node, prev) { - this.childNodes.insertAfter(node, prev); - } set element(element) { this._element = element; this.renderTree.elements.set(element, this); diff --git a/src/js/parsers/dom.js b/src/js/parsers/dom.js index e6acbe9ae..ebc339657 100644 --- a/src/js/parsers/dom.js +++ b/src/js/parsers/dom.js @@ -77,23 +77,23 @@ function parseMarkers(section, builder, topNode) { if (currentNode.firstChild) { if (isValidMarkerElement(currentNode) && text !== null) { - section.appendMarker(builder.createMarker(text, markups.slice())); + section.markers.append(builder.createMarker(text, markups.slice())); text = null; } currentNode = currentNode.firstChild; } else if (currentNode.nextSibling) { if (currentNode === topNode) { - section.appendMarker(builder.createMarker(text, markups.slice())); + section.markers.append(builder.createMarker(text, markups.slice())); break; } else { currentNode = currentNode.nextSibling; if (currentNode.nodeType === ELEMENT_NODE && isValidMarkerElement(currentNode) && text !== null) { - section.appendMarker(builder.createMarker(text, markups.slice())); + section.markers.append(builder.createMarker(text, markups.slice())); text = null; } } } else { - section.appendMarker(builder.createMarker(text, markups.slice())); + section.markers.append(builder.createMarker(text, markups.slice())); while (currentNode && !currentNode.nextSibling && currentNode !== topNode) { currentNode = currentNode.parentNode; @@ -169,7 +169,7 @@ NewHTMLParser.prototype = { if (!isEmptyTextNode(sectionElement)) { section = this.parseSection(previousSection, sectionElement); if (section !== previousSection) { - post.appendSection(section); + post.sections.append(section); previousSection = section; } } diff --git a/src/js/parsers/mobiledoc.js b/src/js/parsers/mobiledoc.js index ec1904950..23fa41be7 100644 --- a/src/js/parsers/mobiledoc.js +++ b/src/js/parsers/mobiledoc.js @@ -55,17 +55,17 @@ export default class MobiledocParser { parseCardSection([type, name, payload], post) { const section = this.builder.createCardSection(name, payload); - post.appendSection(section); + post.sections.append(section); } parseImageSection([type, src], post) { const section = this.builder.createImageSection(src); - post.appendSection(section); + post.sections.append(section); } parseMarkupSection([type, tagName, markers], post) { const section = this.builder.createMarkupSection(tagName); - post.appendSection(section); + post.sections.append(section); this.parseMarkers(markers, section); } @@ -78,7 +78,7 @@ export default class MobiledocParser { this.markups.push(this.markerTypes[index]); }); const marker = this.builder.createMarker(value, this.markups.slice()); - section.appendMarker(marker); + section.markers.append(marker); this.markups = this.markups.slice(0, this.markups.length-closeCount); } } diff --git a/src/js/parsers/post.js b/src/js/parsers/post.js index 1f8104c7b..ffe7397de 100644 --- a/src/js/parsers/post.js +++ b/src/js/parsers/post.js @@ -21,7 +21,7 @@ export default class PostParser { const post = this.builder.createPost(); forEach(element.childNodes, child => { - post.appendSection(this.sectionParser.parse(child)); + post.sections.append(this.sectionParser.parse(child)); }); return post; @@ -99,12 +99,12 @@ export default class PostParser { if (previousMarker) { // insert this marker after the previous one - section.insertMarkerAfter(marker, previousMarker); - section.renderNode.insertAfter(renderNode, previousMarker.renderNode); + section.markers.insertAfter(marker, previousMarker); + section.renderNode.childNodes.insertAfter(renderNode, previousMarker.renderNode); } else { // insert marker at the beginning of the section - section.prependMarker(marker); - section.renderNode.insertAfter(renderNode, null); + section.markers.prepend(marker); + section.renderNode.childNodes.insertAfter(renderNode, null); } // find the nextMarkerElement, set it on the render node diff --git a/src/js/parsers/section.js b/src/js/parsers/section.js index 86dcdbc51..1e08ad504 100644 --- a/src/js/parsers/section.js +++ b/src/js/parsers/section.js @@ -35,11 +35,11 @@ export default class SectionParser { // close a trailing text nodes if it exists if (state.text.length) { let marker = this.builder.createMarker(state.text, state.markups); - state.section.appendMarker(marker); + state.section.markers.append(marker); } if (section.markers.length === 0) { - section.appendMarker(this.builder.createBlankMarker()); + section.markers.append(this.builder.createBlankMarker()); } return section; @@ -64,7 +64,7 @@ export default class SectionParser { if (state.text.length) { // close previous text marker let marker = this.builder.createMarker(state.text, state.markups); - state.section.appendMarker(marker); + state.section.markers.append(marker); state.text = ''; } @@ -79,7 +79,7 @@ export default class SectionParser { // close the marker started for this node and pop // its markup from the stack let marker = this.builder.createMarker(state.text, state.markups); - state.section.appendMarker(marker); + state.section.markers.append(marker); state.markups.pop(); state.text = ''; } diff --git a/src/js/renderers/editor-dom.js b/src/js/renderers/editor-dom.js index 7dc0903d4..a8f06a3e5 100644 --- a/src/js/renderers/editor-dom.js +++ b/src/js/renderers/editor-dom.js @@ -205,7 +205,7 @@ let destroyHooks = { }, [MARKUP_SECTION_TYPE](renderNode, section) { let post = renderNode.parent.postNode; - post.removeSection(section); + post.sections.remove(section); // Some formatting commands remove the element from the DOM during // formatting. Do not error if this is the case. if (renderNode.element.parentNode) { @@ -224,7 +224,7 @@ let destroyHooks = { } if (marker.section) { - marker.section.removeMarker(marker); + marker.section.markers.remove(marker); } if (element.parentNode) { @@ -235,7 +235,7 @@ let destroyHooks = { [IMAGE_SECTION_TYPE](renderNode, section) { let post = renderNode.parent.postNode; - post.removeSection(section); + post.sections.remove(section); renderNode.element.parentNode.removeChild(renderNode.element); }, @@ -244,7 +244,7 @@ let destroyHooks = { renderNode.cardNode.teardown(); } let post = renderNode.parent.postNode; - post.removeSection(section); + post.sections.remove(section); renderNode.element.parentNode.removeChild(renderNode.element); } }; @@ -256,7 +256,7 @@ function removeChildren(parentNode) { let nextChild = child.next; if (child.isRemoved) { destroyHooks[child.postNode.type](child, child.postNode); - parentNode.removeChild(child); + parentNode.childNodes.remove(child); } child = nextChild; } @@ -269,7 +269,7 @@ function lookupNode(renderTree, parentNode, postNode, previousNode) { return postNode.renderNode; } else { let renderNode = new RenderNode(postNode); - parentNode.insertAfter(renderNode, previousNode); + parentNode.childNodes.insertAfter(renderNode, previousNode); postNode.renderNode = renderNode; return renderNode; } diff --git a/tests/unit/models/markup-section-test.js b/tests/unit/models/markup-section-test.js index b5248da3e..4143d273d 100644 --- a/tests/unit/models/markup-section-test.js +++ b/tests/unit/models/markup-section-test.js @@ -14,7 +14,7 @@ test('a section can append a marker', (assert) => { const s1 = new Section(); const m1 = new Marker('hello'); - s1.appendMarker(m1); + s1.markers.append(m1); assert.equal(s1.markers.length, 1); }); diff --git a/tests/unit/parsers/dom-test.js b/tests/unit/parsers/dom-test.js index 8679259af..297dab7e7 100644 --- a/tests/unit/parsers/dom-test.js +++ b/tests/unit/parsers/dom-test.js @@ -33,11 +33,11 @@ test('blank textnodes are ignored', (assert) => { let post = parser.parse(buildDOM('

first line

\n

second line

')); let expectedFirst = builder.createMarkupSection('P'); - expectedFirst.appendMarker(builder.createMarker('first line')); - expectedPost.appendSection(expectedFirst); + expectedFirst.markers.append(builder.createMarker('first line')); + expectedPost.sections.append(expectedFirst); let expectedSecond = builder.createMarkupSection('P'); - expectedSecond.appendMarker(builder.createMarker('second line')); - expectedPost.appendSection(expectedSecond); + expectedSecond.markers.append(builder.createMarker('second line')); + expectedPost.sections.append(expectedSecond); assert.deepEqual(post, expectedPost); }); @@ -46,11 +46,11 @@ test('textnode adjacent to p tag becomes section', (assert) => { const post = parser.parse(buildDOM('

first line

second line')); let expectedFirst = builder.createMarkupSection('P'); - expectedFirst.appendMarker(builder.createMarker('first line')); - expectedPost.appendSection(expectedFirst); + expectedFirst.markers.append(builder.createMarker('first line')); + expectedPost.sections.append(expectedFirst); let expectedSecond = builder.createMarkupSection('P', [], true); - expectedSecond.appendMarker(builder.createMarker('second line')); - expectedPost.appendSection(expectedSecond); + expectedSecond.markers.append(builder.createMarker('second line')); + expectedPost.sections.append(expectedSecond); assert.deepEqual(post, expectedPost); }); @@ -59,8 +59,8 @@ test('p tag (section markup) should create a block', (assert) => { const post = parser.parse(buildDOM('

text

')); let expectedFirst = builder.createMarkupSection('P'); - expectedFirst.appendMarker(builder.createMarker('text')); - expectedPost.appendSection(expectedFirst); + expectedFirst.markers.append(builder.createMarker('text')); + expectedPost.sections.append(expectedFirst); assert.deepEqual(post, expectedPost); }); @@ -69,10 +69,10 @@ test('strong tag (stray markup) without a block should create a block', (assert) const post = parser.parse(buildDOM('text')); let expectedFirst = builder.createMarkupSection('P', [], true); - expectedFirst.appendMarker(builder.createMarker('text', [ + expectedFirst.markers.append(builder.createMarker('text', [ builder.createMarkup('STRONG') ])); - expectedPost.appendSection(expectedFirst); + expectedPost.sections.append(expectedFirst); assert.deepEqual(post, expectedPost); }); @@ -82,13 +82,13 @@ test('strong tag with inner em (stray markup) without a block should create a bl let expectedFirst = builder.createMarkupSection('P', [], true); let strong = builder.createMarkup('STRONG'); - expectedFirst.appendMarker(builder.createMarker('stray', [ + expectedFirst.markers.append(builder.createMarker('stray', [ strong, builder.createMarkup('EM') ])); - expectedFirst.appendMarker(builder.createMarker(' markup tags', [strong])); - expectedFirst.appendMarker(builder.createMarker('.')); - expectedPost.appendSection(expectedFirst); + expectedFirst.markers.append(builder.createMarker(' markup tags', [strong])); + expectedFirst.markers.append(builder.createMarker('.')); + expectedPost.sections.append(expectedFirst); assert.deepEqual(post, expectedPost); }); @@ -97,8 +97,8 @@ test('stray text (stray markup) should create a block', (assert) => { const post = parser.parse(buildDOM('text')); let expectedFirst = builder.createMarkupSection('P', [], true); - expectedFirst.appendMarker(builder.createMarker('text')); - expectedPost.appendSection(expectedFirst); + expectedFirst.markers.append(builder.createMarker('text')); + expectedPost.sections.append(expectedFirst); assert.deepEqual(post, expectedPost); }); @@ -107,12 +107,12 @@ test('text node, strong tag, text node (stray markup) without a block should cre const post = parser.parse(buildDOM('start bold end')); let expectedFirst = builder.createMarkupSection('P', [], true); - expectedFirst.appendMarker(builder.createMarker('start ')); - expectedFirst.appendMarker(builder.createMarker('bold', [ + expectedFirst.markers.append(builder.createMarker('start ')); + expectedFirst.markers.append(builder.createMarker('bold', [ builder.createMarkup('STRONG') ])); - expectedFirst.appendMarker(builder.createMarker(' end')); - expectedPost.appendSection(expectedFirst); + expectedFirst.markers.append(builder.createMarker(' end')); + expectedPost.sections.append(expectedFirst); assert.deepEqual(post, expectedPost); }); @@ -121,10 +121,10 @@ test('italic tag (stray markup) without a block should create a block', (assert) const post = parser.parse(buildDOM('text')); let expectedFirst = builder.createMarkupSection('P', [], true); - expectedFirst.appendMarker(builder.createMarker('text', [ + expectedFirst.markers.append(builder.createMarker('text', [ builder.createMarkup('EM') ])); - expectedPost.appendSection(expectedFirst); + expectedPost.sections.append(expectedFirst); assert.deepEqual(post, expectedPost); }); @@ -133,8 +133,8 @@ test('u tag (stray markup) without a block should strip U and create a block', ( const post = parser.parse(buildDOM('text')); let expectedFirst = builder.createMarkupSection('P', [], true); - expectedFirst.appendMarker(builder.createMarker('text')); - expectedPost.appendSection(expectedFirst); + expectedFirst.markers.append(builder.createMarker('text')); + expectedPost.sections.append(expectedFirst); assert.deepEqual(post, expectedPost); }); @@ -144,10 +144,10 @@ test('a tag (stray markup) without a block should create a block', (assert) => { const post = parser.parse(buildDOM('text')); let expectedFirst = builder.createMarkupSection('P', [], true); - expectedFirst.appendMarker(builder.createMarker('text', [ + expectedFirst.markers.append(builder.createMarker('text', [ builder.createMarkup('A', ['href', url]) ])); - expectedPost.appendSection(expectedFirst); + expectedPost.sections.append(expectedFirst); assert.deepEqual(post, expectedPost); }); @@ -157,9 +157,9 @@ test('markup: break', (assert) => { const post = parser.parse(buildDOM('line
break')); let expectedFirst = builder.createMarkupSection('P', [], true); - expectedFirst.appendMarker(builder.createMarker('line ')); - expectedFirst.appendMarker(builder.createMarker('break')); - expectedPost.appendSection(expectedFirst); + expectedFirst.markers.append(builder.createMarker('line ')); + expectedFirst.markers.append(builder.createMarker('break')); + expectedPost.sections.append(expectedFirst); assert.deepEqual(post, expectedPost); }); @@ -169,9 +169,9 @@ test('sub tag (stray markup) without a block should filter SUB and create a bloc const post = parser.parse(buildDOM('footnote1')); let expectedFirst = builder.createMarkupSection('P', [], true); - expectedFirst.appendMarker(builder.createMarker('footnote')); - expectedFirst.appendMarker(builder.createMarker('1')); - expectedPost.appendSection(expectedFirst); + expectedFirst.markers.append(builder.createMarker('footnote')); + expectedFirst.markers.append(builder.createMarker('1')); + expectedPost.sections.append(expectedFirst); assert.deepEqual(post, expectedPost); }); @@ -180,9 +180,9 @@ test('sup tag (stray markup) without a block should filter SUP and create a bloc const post = parser.parse(buildDOM('e=mc2')); let expectedFirst = builder.createMarkupSection('P', [], true); - expectedFirst.appendMarker(builder.createMarker('e=mc')); - expectedFirst.appendMarker(builder.createMarker('2')); - expectedPost.appendSection(expectedFirst); + expectedFirst.markers.append(builder.createMarker('e=mc')); + expectedFirst.markers.append(builder.createMarker('2')); + expectedPost.sections.append(expectedFirst); assert.deepEqual(post, expectedPost); }); @@ -191,13 +191,13 @@ test('list (stray markup) without a block should create a block', (assert) => { const post = parser.parse(buildDOM('')); let expectedFirst = builder.createMarkupSection('UL'); - expectedFirst.appendMarker(builder.createMarker('Item 1', [ + expectedFirst.markers.append(builder.createMarker('Item 1', [ builder.createMarkup('LI') ])); - expectedFirst.appendMarker(builder.createMarker('Item 2', [ + expectedFirst.markers.append(builder.createMarker('Item 2', [ builder.createMarkup('LI') ])); - expectedPost.appendSection(expectedFirst); + expectedPost.sections.append(expectedFirst); assert.deepEqual(post, expectedPost); }); @@ -206,37 +206,37 @@ test('nested tags (section markup) should create a block', (assert) => { const post = parser.parse(buildDOM('

Double. Double staggered start. Double staggered end. Double staggered middle.

')); let expectedFirst = builder.createMarkupSection('P'); - expectedFirst.appendMarker(builder.createMarker('Double.', [ + expectedFirst.markers.append(builder.createMarker('Double.', [ builder.createMarkup('EM'), builder.createMarkup('STRONG') ])); - expectedFirst.appendMarker(builder.createMarker(' ')); + expectedFirst.markers.append(builder.createMarker(' ')); let firstStrong = builder.createMarkup('STRONG'); - expectedFirst.appendMarker(builder.createMarker('Double staggered', [ + expectedFirst.markers.append(builder.createMarker('Double staggered', [ firstStrong, builder.createMarkup('EM') ])); - expectedFirst.appendMarker(builder.createMarker(' start.', [firstStrong])); - expectedFirst.appendMarker(builder.createMarker(' ')); + expectedFirst.markers.append(builder.createMarker(' start.', [firstStrong])); + expectedFirst.markers.append(builder.createMarker(' ')); let secondStrong = builder.createMarkup('STRONG'); - expectedFirst.appendMarker(builder.createMarker('Double ', [ + expectedFirst.markers.append(builder.createMarker('Double ', [ secondStrong ])); - expectedFirst.appendMarker(builder.createMarker('staggered end.', [ + expectedFirst.markers.append(builder.createMarker('staggered end.', [ secondStrong, builder.createMarkup('EM') ])); - expectedFirst.appendMarker(builder.createMarker(' ')); + expectedFirst.markers.append(builder.createMarker(' ')); let thirdStrong = builder.createMarkup('STRONG'); - expectedFirst.appendMarker(builder.createMarker('Double ', [ + expectedFirst.markers.append(builder.createMarker('Double ', [ thirdStrong ])); - expectedFirst.appendMarker(builder.createMarker('staggered', [ + expectedFirst.markers.append(builder.createMarker('staggered', [ thirdStrong, builder.createMarkup('EM') ])); - expectedFirst.appendMarker(builder.createMarker(' middle.', [thirdStrong])); - expectedPost.appendSection(expectedFirst); + expectedFirst.markers.append(builder.createMarker(' middle.', [thirdStrong])); + expectedPost.sections.append(expectedFirst); assert.deepEqual(post, expectedPost); let sectionMarkers = post.sections.head.markers; @@ -345,10 +345,10 @@ test('attributes', (assert) => { const post = parser.parse(buildDOM(`

Link to google.com

`)); let expectedFirst = builder.createMarkupSection('P'); - expectedFirst.appendMarker(builder.createMarker('Link to google.com', [ + expectedFirst.markers.append(builder.createMarker('Link to google.com', [ builder.createMarkup('A', ['href', href, 'rel', rel]) ])); - expectedPost.appendSection(expectedFirst); + expectedPost.sections.append(expectedFirst); assert.deepEqual(post, expectedPost); }); @@ -357,10 +357,10 @@ test('attributes filters out inline styles and classes', (assert) => { const post = parser.parse(buildDOM('

test

')); let expectedFirst = builder.createMarkupSection('P'); - expectedFirst.appendMarker(builder.createMarker('test', [ + expectedFirst.markers.append(builder.createMarker('test', [ builder.createMarkup('B') ])); - expectedPost.appendSection(expectedFirst); + expectedPost.sections.append(expectedFirst); assert.deepEqual(post, expectedPost); }); @@ -369,8 +369,8 @@ test('blocks: paragraph', (assert) => { const post = parser.parse(buildDOM('

TEXT

')); let expectedFirst = builder.createMarkupSection('P'); - expectedFirst.appendMarker(builder.createMarker('TEXT')); - expectedPost.appendSection(expectedFirst); + expectedFirst.markers.append(builder.createMarker('TEXT')); + expectedPost.sections.append(expectedFirst); assert.deepEqual(post, expectedPost); }); @@ -379,8 +379,8 @@ test('blocks: heading', (assert) => { const post = parser.parse(buildDOM('

TEXT

')); let expectedFirst = builder.createMarkupSection('H2'); - expectedFirst.appendMarker(builder.createMarker('TEXT')); - expectedPost.appendSection(expectedFirst); + expectedFirst.markers.append(builder.createMarker('TEXT')); + expectedPost.sections.append(expectedFirst); assert.deepEqual(post, expectedPost); }); @@ -389,8 +389,8 @@ test('blocks: subheading', (assert) => { const post = parser.parse(buildDOM('

TEXT

')); let expectedFirst = builder.createMarkupSection('H3'); - expectedFirst.appendMarker(builder.createMarker('TEXT')); - expectedPost.appendSection(expectedFirst); + expectedFirst.markers.append(builder.createMarker('TEXT')); + expectedPost.sections.append(expectedFirst); assert.deepEqual(post, expectedPost); }); @@ -414,8 +414,8 @@ test('blocks: quote', (assert) => { const post = parser.parse(buildDOM('
quote
')); let expectedFirst = builder.createMarkupSection('BLOCKQUOTE'); - expectedFirst.appendMarker(builder.createMarker('quote')); - expectedPost.appendSection(expectedFirst); + expectedFirst.markers.append(builder.createMarker('quote')); + expectedPost.sections.append(expectedFirst); assert.deepEqual(post, expectedPost); }); @@ -424,14 +424,14 @@ test('blocks: list', (assert) => { const post = parser.parse(buildDOM('')); let expectedFirst = builder.createMarkupSection('UL'); - expectedFirst.appendMarker(builder.createMarker('Item 1', [ + expectedFirst.markers.append(builder.createMarker('Item 1', [ builder.createMarkup('LI') ])); - expectedFirst.appendMarker(builder.createMarker(' ')); - expectedFirst.appendMarker(builder.createMarker('Item 2', [ + expectedFirst.markers.append(builder.createMarker(' ')); + expectedFirst.markers.append(builder.createMarker('Item 2', [ builder.createMarkup('LI') ])); - expectedPost.appendSection(expectedFirst); + expectedPost.sections.append(expectedFirst); assert.deepEqual(post, expectedPost); }); @@ -440,14 +440,14 @@ test('blocks: ordered list', (assert) => { const post = parser.parse(buildDOM('
  1. Item 1
  2. Item 2
')); let expectedFirst = builder.createMarkupSection('OL'); - expectedFirst.appendMarker(builder.createMarker('Item 1', [ + expectedFirst.markers.append(builder.createMarker('Item 1', [ builder.createMarkup('LI') ])); - expectedFirst.appendMarker(builder.createMarker(' ')); - expectedFirst.appendMarker(builder.createMarker('Item 2', [ + expectedFirst.markers.append(builder.createMarker(' ')); + expectedFirst.markers.append(builder.createMarker('Item 2', [ builder.createMarkup('LI') ])); - expectedPost.appendSection(expectedFirst); + expectedPost.sections.append(expectedFirst); assert.deepEqual(post, expectedPost); }); @@ -507,13 +507,13 @@ test('converts tags to mapped values', (assert) => { let expectedFirst = builder.createMarkupSection('P'); let bold = builder.createMarkup('B'); - expectedFirst.appendMarker(builder.createMarker('Converts', [ + expectedFirst.markers.append(builder.createMarker('Converts', [ bold, builder.createMarkup('I') ])); - expectedFirst.appendMarker(builder.createMarker(' tags', [bold])); - expectedFirst.appendMarker(builder.createMarker('.')); - expectedPost.appendSection(expectedFirst); + expectedFirst.markers.append(builder.createMarker(' tags', [bold])); + expectedFirst.markers.append(builder.createMarker('.')); + expectedPost.sections.append(expectedFirst); assert.deepEqual(post, expectedPost); }); diff --git a/tests/unit/parsers/mobiledoc-test.js b/tests/unit/parsers/mobiledoc-test.js index f008c9886..f398151f3 100644 --- a/tests/unit/parsers/mobiledoc-test.js +++ b/tests/unit/parsers/mobiledoc-test.js @@ -43,8 +43,8 @@ test('#parse doc without marker types', (assert) => { let section = builder.createMarkupSection('P', [], false); let marker = builder.createMarker('hello world'); - section.appendMarker(marker); - post.appendSection(section); + section.markers.append(marker); + post.sections.append(section); assert.deepEqual( parsed, @@ -80,8 +80,8 @@ test('#parse doc with marker type', (assert) => { builder.createMarker('brave new', [aMarkerType, bMarkerType]), builder.createMarker('world', [aMarkerType]) ]; - markers.forEach(marker => section.appendMarker(marker)); - post.appendSection(section); + markers.forEach(marker => section.markers.append(marker)); + post.sections.append(section); assert.deepEqual( parsed, @@ -103,7 +103,7 @@ test('#parse doc with image section', (assert) => { const parsed = parser.parse(mobiledoc); let section = builder.createImageSection(DATA_URL); - post.appendSection(section); + post.sections.append(section); assert.deepEqual( parsed, post @@ -124,7 +124,7 @@ test('#parse doc with custom card type', (assert) => { const parsed = parser.parse(mobiledoc); let section = builder.createCardSection('custom-card'); - post.appendSection(section); + post.sections.append(section); assert.deepEqual( parsed, post diff --git a/tests/unit/renderers/editor-dom-test.js b/tests/unit/renderers/editor-dom-test.js index a69f093c7..2c2dffa49 100644 --- a/tests/unit/renderers/editor-dom-test.js +++ b/tests/unit/renderers/editor-dom-test.js @@ -40,9 +40,9 @@ test("It renders a dirty post", (assert) => { test("It renders a dirty post with un-rendered sections", (assert) => { let post = builder.createPost(); let sectionA = builder.createMarkupSection('P'); - post.appendSection(sectionA); + post.sections.append(sectionA); let sectionB = builder.createMarkupSection('P'); - post.appendSection(sectionB); + post.sections.append(sectionB); let renderNode = new RenderNode(post); let renderTree = new RenderTree(renderNode); @@ -80,7 +80,7 @@ test("It renders a dirty post with un-rendered sections", (assert) => { test(`Remove nodes with ${testInfo.name} section`, (assert) => { let post = builder.createPost(); let section = testInfo.section(builder); - post.appendSection(section); + post.sections.append(section); let postElement = document.createElement('div'); let sectionElement = document.createElement('p'); @@ -95,7 +95,7 @@ test("It renders a dirty post with un-rendered sections", (assert) => { let sectionRenderNode = renderTree.buildRenderNode(section); sectionRenderNode.element = sectionElement; sectionRenderNode.scheduleForRemoval(); - postRenderNode.appendChild(sectionRenderNode); + postRenderNode.childNodes.append(sectionRenderNode); render(renderTree); @@ -113,8 +113,8 @@ test("It renders a dirty post with un-rendered sections", (assert) => { test('renders a post with marker', (assert) => { let post = builder.createPost(); let section = builder.createMarkupSection('P'); - post.appendSection(section); - section.appendMarker( + post.sections.append(section); + section.markers.append( builder.createMarker('Hi', [ builder.createMarkup('STRONG') ]) @@ -130,19 +130,19 @@ test('renders a post with marker', (assert) => { test('renders a post with multiple markers', (assert) => { let post = builder.createPost(); let section = builder.createMarkupSection('P'); - post.appendSection(section); + post.sections.append(section); let b = builder.createMarkup('B'); let i = builder.createMarkup('I'); - section.appendMarker(builder.createMarker('hello ')); - section.appendMarker( + section.markers.append(builder.createMarker('hello ')); + section.markers.append( builder.createMarker('bold, ', [b]) ); - section.appendMarker( + section.markers.append( builder.createMarker('italic,', [b,i]) ); - section.appendMarker( + section.markers.append( builder.createMarker(' world.') ); @@ -158,7 +158,7 @@ test('renders a post with image', (assert) => { let url = DATA_URL; let post = builder.createPost(); let section = builder.createImageSection(url); - post.appendSection(section); + post.sections.append(section); let node = new RenderNode(post); let renderTree = new RenderTree(node); @@ -178,7 +178,7 @@ test('renders a card section', (assert) => { } } }; - post.appendSection(cardSection); + post.sections.append(cardSection); let node = new RenderNode(post); let renderTree = new RenderTree(node); @@ -202,7 +202,7 @@ test('renders a card section into a non-contenteditable element', (assert) => { } } }; - post.appendSection(cardSection); + post.sections.append(cardSection); let node = new RenderNode(post); let renderTree = new RenderTree(node); @@ -248,9 +248,9 @@ test('rerender a marker after adding a markup to it', (assert) => { const marker1 = builder.createMarker('text1', [b]); const marker2 = builder.createMarker('text2'); - section.appendMarker(marker1); - section.appendMarker(marker2); - post.appendSection(section); + section.markers.append(marker1); + section.markers.append(marker2); + post.sections.append(section); let node = new RenderNode(post); let renderTree = new RenderTree(node); @@ -277,9 +277,9 @@ test('rerender a marker after removing a markup from it', (assert) => { const marker1 = builder.createMarker('text1'); const marker2 = builder.createMarker('text2', [bMarkup]); - section.appendMarker(marker1); - section.appendMarker(marker2); - post.appendSection(section); + section.markers.append(marker1); + section.markers.append(marker2); + post.sections.append(section); let node = new RenderNode(post); let renderTree = new RenderTree(node); @@ -306,9 +306,9 @@ test('rerender a marker after removing a markup from it (when changed marker is const marker1 = builder.createMarker('text1', [bMarkup]); const marker2 = builder.createMarker('text2'); - section.appendMarker(marker1); - section.appendMarker(marker2); - post.appendSection(section); + section.markers.append(marker1); + section.markers.append(marker2); + post.sections.append(section); let node = new RenderNode(post); let renderTree = new RenderTree(node); @@ -335,9 +335,9 @@ test('rerender a marker after removing a markup from it (when both markers have const marker1 = builder.createMarker('text1', [bMarkup]); const marker2 = builder.createMarker('text2', [bMarkup]); - section.appendMarker(marker1); - section.appendMarker(marker2); - post.appendSection(section); + section.markers.append(marker1); + section.markers.append(marker2); + post.sections.append(section); let node = new RenderNode(post); let renderTree = new RenderTree(node); @@ -364,9 +364,9 @@ test('rerender a marker after removing a markup from it (when both markers have const marker1 = builder.createMarker('text1', [bMarkup]); const marker2 = builder.createMarker('text2', [bMarkup]); - section.appendMarker(marker1); - section.appendMarker(marker2); - post.appendSection(section); + section.markers.append(marker1); + section.markers.append(marker2); + post.sections.append(section); let node = new RenderNode(post); let renderTree = new RenderTree(node); @@ -400,8 +400,8 @@ test('render when contiguous markers have out-of-order markups', (assert) => { ]; const m1 = markers[0]; - markers.forEach(m => section.appendMarker(m)); - post.appendSection(section); + markers.forEach(m => section.markers.append(m)); + post.sections.append(section); let node = new RenderNode(post); let renderTree = new RenderTree(node); diff --git a/tests/unit/renderers/mobiledoc-test.js b/tests/unit/renderers/mobiledoc-test.js index 25d0c2cf8..289a809d2 100644 --- a/tests/unit/renderers/mobiledoc-test.js +++ b/tests/unit/renderers/mobiledoc-test.js @@ -27,8 +27,8 @@ test('renders a blank post', (assert) => { test('renders a post with marker', (assert) => { let post = builder.createPost(); let section = builder.createMarkupSection('P'); - post.appendSection(section); - section.appendMarker( + post.sections.append(section); + section.markers.append( builder.createMarker('Hi', [ builder.createMarkup('STRONG') ]) @@ -52,14 +52,14 @@ test('renders a post with marker', (assert) => { test('renders a post section with markers sharing a markup', (assert) => { let post = builder.createPost(); let section = builder.createMarkupSection('P'); - post.appendSection(section); + post.sections.append(section); let markup = builder.createMarkup('STRONG'); - section.appendMarker( + section.markers.append( builder.createMarker('Hi', [ markup ]) ); - section.appendMarker( + section.markers.append( builder.createMarker(' Guy', [ markup ]) @@ -85,7 +85,7 @@ test('renders a post with image', (assert) => { let url = "data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs="; let post = builder.createPost(); let section = builder.createImageSection(url); - post.appendSection(section); + post.sections.append(section); let mobiledoc = render(post); assert.deepEqual(mobiledoc, { @@ -102,7 +102,7 @@ test('renders a post with image', (assert) => { test('renders a post with image and null src', (assert) => { let post = builder.createPost(); let section = builder.createImageSection(); - post.appendSection(section); + post.sections.append(section); let mobiledoc = render(post); assert.deepEqual(mobiledoc, { @@ -121,7 +121,7 @@ test('renders a post with card', (assert) => { let payload = { bar: 'baz' }; let post = builder.createPost(); let section = builder.createCardSection(cardName, payload); - post.appendSection(section); + post.sections.append(section); let mobiledoc = render(post); assert.deepEqual(mobiledoc, {