elliptical
Version:
Interactive natural-language interfaces
45 lines (35 loc) • 1.01 kB
JavaScript
;
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 };