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 = '\n
x 3
'; + var htmlExpected = '
x3
'; + + 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() {