html-flavors
Version:
HTML conversion tools
36 lines (32 loc) • 1.18 kB
JavaScript
var cls = 'class Foo extends React.Component {\n' +
'sss() {} render() { return <div className="row">kotek</div>} ' +
'};';
var html = cls + 'class Bar extends React.Component {\n' +
'render() { var a = 33;return <div className="row">piesek</div>} ' +
'};';
var fs = require('fs');
var escodegen = require('escodegen-wallaby');
html = fs.readFileSync('test.js', 'utf8');
var esprima = require('esprima-fb');
function p(html) {
var ast = esprima.parse(html, {sourceType: 'module', range: true, raw: false});
var s = ast.body.filter(function(node) {
return node.type === 'ClassDeclaration';
}).map(function (node) {
var methods = node.body.body.filter(function (node) {
return node.type === 'MethodDefinition';
});
var render = methods.filter(function (node) {
return node.key.name === 'render';
})[0].value.body.body.filter(function (node) {
return node.type === 'ReturnStatement';
})[0].argument;
return {
name: node.id.name,
body: escodegen.generate(render)
}
});
var t = JSON.stringify(s,0,2);
console.log(t);
};
p(html);