in src/htmltojsx.js [564:595]
_visitText: function(node) {
var parentTag = node.parentNode && jsxTagName(node.parentNode.tagName);
if (parentTag === 'textarea' || parentTag === 'style') {
// Ignore text content of textareas and styles, as it will have already been moved
// to a "defaultValue" attribute and "dangerouslySetInnerHTML" attribute respectively.
return;
}
var text = escapeSpecialChars(node.textContent);
if (this._inPreTag) {
// If this text is contained within a <pre>, we need to ensure the JSX
// whitespace coalescing rules don't eat the whitespace. This means
// wrapping newlines and sequences of two or more spaces in variables.
text = text
.replace(/\r/g, '')
.replace(/( {2,}|\n|\t|\{|\})/g, function(whitespace) {
return '{' + JSON.stringify(whitespace) + '}';
});
} else {
// Handle any curly braces.
text = text
.replace(/(\{|\})/g, function(brace) {
return '{\'' + brace + '\'}';
});
// If there's a newline in the text, adjust the indent level
if (text.indexOf('\n') > -1) {
text = text.replace(/\n\s*/g, this._getIndentedNewline());
}
}
this.output += text;
},