UNPKG

elliptical

Version:

Interactive natural-language interfaces

45 lines (35 loc) 1.01 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* visit(option, _ref, traverse) { let props = _ref.props; let children = _ref.children; // preprocess with inbound let newOption = option; if (props.inbound) { newOption = props.inbound(option); } const iterator = traverse(children[0], newOption); if (!props.outbound) { yield* iterator; return; } for (let output of iterator) { if (props.skipIncomplete && !(0, _utils.isComplete)(output)) { yield output; } else { const mapped = props.outbound(output); if (mapped[Symbol.iterator]) { yield* (0, _utils.limitIterator)(mapped, props.limit); } else { yield mapped; } } } } exports.default = { visit: visit };