diff --git a/lib/processing-instructions.js b/lib/processing-instructions.js
index 8f3f97a..0ec2f86 100644
--- a/lib/processing-instructions.js
+++ b/lib/processing-instructions.js
@@ -8,7 +8,7 @@ var ProcessingInstructions = function(React) {
return {
defaultProcessingInstructions: [{
- shouldProcessNode: ShouldProcessNodeDefinitions.shouldProcessEveryNode,
+ shouldProcessNode: ShouldProcessNodeDefinitions.shouldProcessEveryNodeExceptWhiteSpace,
processNode: processNodeDefinitions.processDefaultNode
}]
};
diff --git a/lib/should-process-node-definitions.js b/lib/should-process-node-definitions.js
index 981dd26..5597cb2 100644
--- a/lib/should-process-node-definitions.js
+++ b/lib/should-process-node-definitions.js
@@ -4,6 +4,11 @@ function shouldProcessEveryNode(node) {
return true;
}
+function shouldProcessEveryNodeExceptWhiteSpace(node) {
+ return node.type !== 'text' || node.data.trim();
+}
+
module.exports = {
- shouldProcessEveryNode: shouldProcessEveryNode
+ shouldProcessEveryNode: shouldProcessEveryNode,
+ shouldProcessEveryNodeExceptWhiteSpace: shouldProcessEveryNodeExceptWhiteSpace
};
diff --git a/test/html-to-react-tests.js b/test/html-to-react-tests.js
index 5ca6afe..453a0d1 100644
--- a/test/html-to-react-tests.js
+++ b/test/html-to-react-tests.js
@@ -101,6 +101,47 @@ describe('Html2React', function() {
assert.equal(reactHtml, htmlExpected);
});
+
+ it('should not insert spans into tables even if there is white space', function() {
+ var htmlInput = '
';
+ var htmlExpected = '';
+
+ var reactComponent = parser.parse(htmlInput);
+ var reactHtml = ReactDOMServer.renderToStaticMarkup(reactComponent);
+
+ assert.equal(reactHtml, htmlExpected);
+ });
+
+ it('should preserve leading white space in a div', function() {
+ var htmlInput = ' hi
';
+
+ var reactComponent = parser.parse(htmlInput);
+ var reactHtml = ReactDOMServer.renderToStaticMarkup(reactComponent);
+
+ assert.equal(reactHtml, htmlInput);
+ });
+
+ // Should it strip out contents of a div containing only white space?
+ it('should strip out contents of a div containing only white space', function() {
+ var htmlInput = '
';
+ var htmlExpected = '';
+
+ var reactComponent = parser.parse(htmlInput);
+ var reactHtml = ReactDOMServer.renderToStaticMarkup(reactComponent);
+
+ assert.equal(reactHtml, htmlExpected);
+ });
+
+ // Should it strip out white space that is a sibling to an element?
+ it('should strip out white space that is a sibling to an element', function() {
+ var htmlInput = ' hibye
';
+ var htmlExpected = 'hibye
';
+
+ var reactComponent = parser.parse(htmlInput);
+ var reactHtml = ReactDOMServer.renderToStaticMarkup(reactComponent);
+
+ assert.equal(reactHtml, htmlExpected);
+ });
});
describe('parse invalid HTML', function() {