mirror of
https://github.com/bobwen-dev/react-templates
synced 2025-04-12 00:56:39 +02:00
Added --normalize-html-whitespace CLI option
This commit is contained in:
parent
d80de30f62
commit
6348e53306
@ -36,6 +36,7 @@
|
|||||||
"escodegen": "^1.8.0",
|
"escodegen": "^1.8.0",
|
||||||
"esprima": "^2.7.1",
|
"esprima": "^2.7.1",
|
||||||
"lodash": "^4.11.1",
|
"lodash": "^4.11.1",
|
||||||
|
"normalize-html-whitespace": "^0.2.0",
|
||||||
"optionator": "^0.8.0",
|
"optionator": "^0.8.0",
|
||||||
"text-table": "^0.2.0"
|
"text-table": "^0.2.0"
|
||||||
},
|
},
|
||||||
|
@ -116,5 +116,10 @@ $ rt <filename> [<filename> ...] [<args>]`,
|
|||||||
enum: Object.keys(reactNativeSupport),
|
enum: Object.keys(reactNativeSupport),
|
||||||
default: reactNativeSupport.default,
|
default: reactNativeSupport.default,
|
||||||
description: `React native version to generate code for (${Object.keys(reactNativeSupport).join(', ')})`
|
description: `React native version to generate code for (${Object.keys(reactNativeSupport).join(', ')})`
|
||||||
|
}, {
|
||||||
|
option: 'normalize-html-whitespace',
|
||||||
|
type: 'Boolean',
|
||||||
|
default: 'false',
|
||||||
|
description: 'Remove repeating whitespace from HTML text.'
|
||||||
}]
|
}]
|
||||||
});
|
});
|
||||||
|
@ -3,6 +3,7 @@ const cheerio = require('cheerio');
|
|||||||
const _ = require('lodash');
|
const _ = require('lodash');
|
||||||
const esprima = require('esprima');
|
const esprima = require('esprima');
|
||||||
const escodegen = require('escodegen');
|
const escodegen = require('escodegen');
|
||||||
|
const normalizeHtmlWhitespace = require('normalize-html-whitespace');
|
||||||
const reactDOMSupport = require('./reactDOMSupport');
|
const reactDOMSupport = require('./reactDOMSupport');
|
||||||
const reactNativeSupport = require('./reactNativeSupport');
|
const reactNativeSupport = require('./reactNativeSupport');
|
||||||
const reactPropTemplates = require('./reactPropTemplates');
|
const reactPropTemplates = require('./reactPropTemplates');
|
||||||
@ -55,6 +56,7 @@ const includeSrcAttr = 'src';
|
|||||||
const requireAttr = 'rt-require';
|
const requireAttr = 'rt-require';
|
||||||
const importAttr = 'rt-import';
|
const importAttr = 'rt-import';
|
||||||
const statelessAttr = 'rt-stateless';
|
const statelessAttr = 'rt-stateless';
|
||||||
|
const preAttr = 'rt-pre';
|
||||||
|
|
||||||
const reactTemplatesSelfClosingTags = [includeNode];
|
const reactTemplatesSelfClosingTags = [includeNode];
|
||||||
|
|
||||||
@ -438,7 +440,15 @@ function convertHtmlToReact(node, context) {
|
|||||||
const sanitizedComment = node.data.split('*/').join('* /');
|
const sanitizedComment = node.data.split('*/').join('* /');
|
||||||
return commentTemplate({data: sanitizedComment});
|
return commentTemplate({data: sanitizedComment});
|
||||||
} else if (node.type === 'text') {
|
} else if (node.type === 'text') {
|
||||||
return trimHtmlText(node.data) ? utils.convertText(node, context, node.data) : '';
|
let text = node.data;
|
||||||
|
const parentNode = node.parent;
|
||||||
|
if (parentNode !== undefined) {
|
||||||
|
const preserveWhitespaces = parentNode.name === 'pre' || parentNode.name === 'textarea' || _.has(parentNode.attribs, preAttr);
|
||||||
|
if (context.options.normalizeHtmlWhitespace && !preserveWhitespaces) {
|
||||||
|
text = normalizeHtmlWhitespace(text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return trimHtmlText(text) ? utils.convertText(node, context, text) : '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user