diff --git a/package.json b/package.json index 57d5743e..5f1c916e 100644 --- a/package.json +++ b/package.json @@ -44,8 +44,9 @@ "emberjs-build": "0.2.1", "git-repo-version": "^0.1.2", "handlebars": "^3.0.2", - "morph-range": "0.2.5", + "morph-range": "0.3.0", "qunit": "^0.7.2", - "rsvp": "~3.0.6" + "rsvp": "~3.0.6", + "simple-dom": "~0.2.4" } } diff --git a/packages/dom-helper/lib/main.js b/packages/dom-helper/lib/main.js index 184d56e1..ac8b7dd3 100644 --- a/packages/dom-helper/lib/main.js +++ b/packages/dom-helper/lib/main.js @@ -519,11 +519,23 @@ prototype.insertBoundary = function(fragment, index) { this.insertBefore(fragment, this.createTextNode(''), child); }; -prototype.setMorphHTML = function(morph, html) { - morph.setHTML(html); +// We plan to remove this eventually, and move to using `setInnerHTML` +// and `insertAdjacentHTML` as the main APIs, so please try not to +// introduce new usage if it can be avoided. +prototype.parseHTML = function(html, contextualElement) { + if (typeof this.document.createRawHTMLSection === 'function') { + // Temporary workaround to support SimpleDOM in node + return this._createRawHTMLSection(html); + } + + return this._createDocumentFragmentFromHTML(html, contextualElement); }; -prototype.parseHTML = function(html, contextualElement) { +prototype._createRawHTMLSection = function(html) { + return this.document.createRawHTMLSection(html); +}; + +prototype._createDocumentFragmentFromHTML = function(html, contextualElement) { var childNodes; if (interiorNamespace(contextualElement) === svgNamespace) { diff --git a/packages/dom-helper/tests/dom-helper-node-test.js b/packages/dom-helper/tests/dom-helper-node-test.js index 3466b7fd..c4f8e919 100644 --- a/packages/dom-helper/tests/dom-helper-node-test.js +++ b/packages/dom-helper/tests/dom-helper-node-test.js @@ -1,5 +1,9 @@ +/*globals require*/ + import DOMHelper from "../dom-helper"; +var SimpleDOM = require('simple-dom'); + var dom; QUnit.module('DOM Helper (Node)', { @@ -34,3 +38,27 @@ test('it instantiates with a stub document', function(){ var createdElement = dom.createElement('div'); equal(createdElement, element, 'dom helper calls passed stub'); }); + +QUnit.module('DOM Helper (Integration: SimpleDOM)', { + afterEach: function() { + dom = null; + } +}); + +test('it instantiates with a SimpleDOM document', function(){ + var doc = new SimpleDOM.Document(); + dom = new DOMHelper(doc); + ok(dom, 'dom helper can instantiate'); + var createdElement = dom.createElement('div'); + equal(createdElement.tagName, 'DIV', 'dom helper calls passed stub'); +}); + +test('it does not parse HTML', function(){ + var doc = new SimpleDOM.Document(); + dom = new DOMHelper(doc); + ok(dom, 'dom helper can instantiate'); + var parsed = dom.parseHTML('