khufu
Version:
A template language for incremental-dom or DSL for javascript views
60 lines (47 loc) • 2.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
exports.compile = compile;
var _babelTypes = require('babel-types');
var T = _interopRequireWildcard(_babelTypes);
var _compiler = require('./compiler');
var _vars = require('./vars');
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function compile(item, path, opt) {
switch (item[0]) {
case 'store':case 'name':
{
var _item = _slicedToArray(item, 2),
_name = _item[0],
name = _item[1];
var ident = path.scope.generateUidIdentifier(name);
(0, _vars.set_var)(path, name, ident);
return ident;
}
case 'unpack_list':
{
var _item2 = _slicedToArray(item, 2),
_list = _item2[0],
items = _item2[1];
return T.arrayPattern(items.map(function (subitem) {
return compile(subitem, path, opt);
}));
}
case 'unpack_map':
{
var _item3 = _slicedToArray(item, 2),
_list2 = _item3[0],
_items = _item3[1];
return T.objectPattern(_items.map(function (_ref) {
var _ref2 = _slicedToArray(_ref, 2),
name = _ref2[0],
value = _ref2[1];
return T.objectProperty(T.identifier(name), compile(value, path, opt));
}));
}
default:
throw (0, _compiler.parse_tree_error)('Unknown expression', item);
}
}