Skip to content

Commit

Permalink
Add support for image sections
Browse files Browse the repository at this point in the history
  • Loading branch information
mixonic committed Jul 13, 2015
1 parent 079e0c1 commit 5fd6d81
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 5 deletions.
15 changes: 13 additions & 2 deletions lib/dom-renderer.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,17 +48,28 @@ export default class DOMRenderer {

renderSection(section) {
const [type] = section;
let rendered;
switch (type) {
case 1:
let rendered = this.renderParagraphSection(section);
rendered = this.renderMarkupSection(section);
utils.appendChild(this.root, rendered);
break;
case 2:
rendered = this.renderImageSection(section);
utils.appendChild(this.root, rendered);
break;
default:
throw new Error('Unimplement renderer for type ' + type);
}
}

renderParagraphSection([type, tagName, markers]) {
renderImageSection([type, src]) {
let element = utils.createElement('img');
element.src = src;
return element;
}

renderMarkupSection([type, tagName, markers]) {
let element = utils.createElement(tagName);
let elements = [element];
let currentElement = element;
Expand Down
22 changes: 19 additions & 3 deletions tests/unit/dom-renderer-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ test('renders a mobiledoc with simple (no attributes) marker', (assert) => {
[ // markers
['B'],
],
[ // sections
[ // sections
[1, 'P', [
[[0], 1, 'hello world']]
]
Expand All @@ -70,7 +70,7 @@ test('renders a mobiledoc with complex (has attributes) marker', (assert) => {
[ // markers
['A', ['href', 'http://google.com']],
],
[ // sections
[ // sections
[1, 'P', [
[[0], 1, 'hello world']
]]
Expand All @@ -90,7 +90,7 @@ test('renders a mobiledoc with multiple markups in a section', (assert) => {
['B'],
['I']
],
[ // sections
[ // sections
[1, 'P', [
[[0], 0, 'hello '], // b
[[1], 0, 'brave '], // b+i
Expand All @@ -106,3 +106,19 @@ test('renders a mobiledoc with multiple markups in a section', (assert) => {

assert.equal(sectionEl.innerHTML, '<b>hello <i>brave new </i>world</b>');
});

test('renders a mobiledoc with image section', (assert) => {
let url = "data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=";
let mobiledoc = [
[], // markers
[ // sections
[2, url]
]
];
let rendered = renderer.render(mobiledoc);
assert.equal(rendered.childNodes.length, 1,
'renders 1 section');
let sectionEl = rendered.childNodes[0];

assert.equal(sectionEl.src, url);
});

0 comments on commit 5fd6d81

Please sign in to comment.