UNPKG

lefty

Version:

A JSX transformer for migi

92 lines (73 loc) 2.07 kB
define(function(require, exports, module){'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _homunculus = require('homunculus'); var _homunculus2 = _interopRequireDefault(_homunculus); var _ignore = require('./ignore'); var _ignore2 = _interopRequireDefault(_ignore); var _InnerTree = require('./InnerTree'); var _InnerTree2 = _interopRequireDefault(_InnerTree); var _jsx = require('./jsx'); var _jsx2 = _interopRequireDefault(_jsx); var _join = require('./join2'); var _join2 = _interopRequireDefault(_join); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var Token = _homunculus2.default.getClass('token', 'jsx'); var Node = _homunculus2.default.getClass('node', 'jsx'); var res = void 0; function stmt(node, param) { recursion(node, param); } function recursion(node, param) { if (node.isToken()) { var token = node.token(); if (token.isVirtual()) { return; } if (!token.ignore) { res += token.content(); } while (token.next()) { token = token.next(); if (token.isVirtual() || !_ignore2.default.S.hasOwnProperty(token.type())) { break; } if (!token.ignore) { res += token.content(); } } } else { switch (node.name()) { case Node.JSXElement: case Node.JSXSelfClosingElement: res += (0, _jsx2.default)(node, { isBind: true }, param); return; case Node.FNEXPR: case Node.FNDECL: case Node.CLASSEXPR: var tree = new _InnerTree2.default(); res += tree.parse(node); return; } node.leaves().forEach(function (leaf) { recursion(leaf, param); }); } } function parse(node, param) { res = ''; var len = node.size(); node.leaves().forEach(function (leaf, i) { //fnbody if (i === len - 2) { leaf.leaves().forEach(function (item) { stmt(item, param); }); } else { res += (0, _join2.default)(leaf); } }); return res; } exports.default = parse;});