UNPKG

html-flavors

Version:
36 lines (32 loc) 1.18 kB
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);