UNPKG

elliptical

Version:

Interactive natural-language interfaces

144 lines (111 loc) 3.53 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); var _lodash = require('lodash'); var _lodash2 = _interopRequireDefault(_lodash); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var _marked = [visit, parseChild].map(_regenerator2.default.mark); var defaultProps = { suppress: true, suppressEmpty: true }; function visit(option, _ref, traverse) { var props = _ref.props; var children = _ref.children; var child; return _regenerator2.default.wrap(function visit$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: props = _lodash2.default.defaults({}, props, defaultProps); child = children[0]; if (!(props.suppress && option.text == null || props.suppressEmpty && option.text === '' || props.suppressWhen && props.suppressWhen(option.text))) { _context.next = 7; break; } _context.next = 5; return outputSelf(option, child, props); case 5: _context.next = 8; break; case 7: return _context.delegateYield(parseChild(option, child, props, traverse), 't0', 8); case 8: case 'end': return _context.stop(); } } }, _marked[0], this); } function parseChild(option, child, props, traverse) { var _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, output; return _regenerator2.default.wrap(function parseChild$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: _iteratorNormalCompletion = true; _didIteratorError = false; _iteratorError = undefined; _context2.prev = 3; _iterator = traverse(child, option)[Symbol.iterator](); case 5: if (_iteratorNormalCompletion = (_step = _iterator.next()).done) { _context2.next = 12; break; } output = _step.value; _context2.next = 9; return output; case 9: _iteratorNormalCompletion = true; _context2.next = 5; break; case 12: _context2.next = 18; break; case 14: _context2.prev = 14; _context2.t0 = _context2['catch'](3); _didIteratorError = true; _iteratorError = _context2.t0; case 18: _context2.prev = 18; _context2.prev = 19; if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } case 21: _context2.prev = 21; if (!_didIteratorError) { _context2.next = 24; break; } throw _iteratorError; case 24: return _context2.finish(21); case 25: return _context2.finish(18); case 26: case 'end': return _context2.stop(); } } }, _marked[1], this, [[3, 14, 18, 26], [19,, 21, 25]]); } function outputSelf(option, child, props) { var word = { label: props.label, placeholder: true }; var modification = { score: 0.01, result: undefined, text: null, words: option.words.concat(word) }; return _lodash2.default.assign({}, option, modification); } exports.default = { visit: visit };