UNPKG

elliptical

Version:

Interactive natural-language interfaces

48 lines (35 loc) 1.22 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _lodash = require('lodash'); var _lodash2 = _interopRequireDefault(_lodash); var _utils = require('../utils'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function* traverseChild(option, child, traverse) { const childOutputs = traverse(child, option); // slight performance optimization if (child.props.id == null) { yield* childOutputs; } else { for (let output of childOutputs) { const newResult = child.props.id != null ? { [child.props.id]: output.result } : output.result; const mods = { result: newResult }; yield _lodash2.default.assign({}, output, mods); } } } function* childrenTraversals(option, children, traverse) { if (children && children.length > 0) { for (let child of children) { yield traverseChild(option, child, traverse); } } } function* visit(option, _ref, traverse) { let props = _ref.props; let children = _ref.children; const traversals = childrenTraversals(option, children, traverse); yield* (0, _utils.limitIterator)(traversals, props.limit); } exports.default = { visit: visit };