UNPKG

elliptical

Version:

Interactive natural-language interfaces

146 lines (113 loc) 4.18 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); var _defineProperty2 = require('babel-runtime/helpers/defineProperty'); var _defineProperty3 = _interopRequireDefault(_defineProperty2); var _lodash = require('lodash'); var _lodash2 = _interopRequireDefault(_lodash); var _utils = require('../utils'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var _marked = [optionsFromRawOutputs, visit].map(_regenerator2.default.mark); function handleAdditions(output, plural, singular, start, end) { var theseAdditions = output[singular] ? [output[singular]] : output[plural]; if (theseAdditions) { return (0, _defineProperty3.default)({}, plural, _lodash2.default.map(theseAdditions, function (value) { return { value: value, start: start, end: end }; })); } else { return {}; } } function modifyOption(option, rawOutput) { var start = option.words.length; var words = option.words.concat(rawOutput.words); var end = words.length; return _lodash2.default.assign({}, option, { result: rawOutput.result, text: rawOutput.remaining, score: rawOutput.score || 1, words: words }, handleAdditions(rawOutput, 'categories', 'category', start, end), handleAdditions(rawOutput, 'arguments', 'argument', start, end), handleAdditions(rawOutput, 'annotations', 'annotation', start, end), handleAdditions(rawOutput, 'qualifiers', 'qualifier', start, end), rawOutput.data ? { data: _lodash2.default.concat(option.data, [rawOutput.data]) } : {}); } function optionsFromRawOutputs(option, rawOutputs) { var _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, rawOutput; return _regenerator2.default.wrap(function optionsFromRawOutputs$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _iteratorNormalCompletion = true; _didIteratorError = false; _iteratorError = undefined; _context.prev = 3; _iterator = rawOutputs[Symbol.iterator](); case 5: if (_iteratorNormalCompletion = (_step = _iterator.next()).done) { _context.next = 12; break; } rawOutput = _step.value; _context.next = 9; return modifyOption(option, rawOutput); case 9: _iteratorNormalCompletion = true; _context.next = 5; break; case 12: _context.next = 18; break; case 14: _context.prev = 14; _context.t0 = _context['catch'](3); _didIteratorError = true; _iteratorError = _context.t0; case 18: _context.prev = 18; _context.prev = 19; if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } case 21: _context.prev = 21; if (!_didIteratorError) { _context.next = 24; break; } throw _iteratorError; case 24: return _context.finish(21); case 25: return _context.finish(18); case 26: case 'end': return _context.stop(); } } }, _marked[0], this, [[3, 14, 18, 26], [19,, 21, 25]]); } function visit(option, _ref2) { var props = _ref2.props; var rawOutputs, outputs; return _regenerator2.default.wrap(function visit$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: if (props.func) { _context2.next = 2; break; } return _context2.abrupt('return'); case 2: rawOutputs = props.func(option); outputs = optionsFromRawOutputs(option, rawOutputs); return _context2.delegateYield((0, _utils.limitIterator)(outputs, props.limit), 't0', 5); case 5: case 'end': return _context2.stop(); } } }, _marked[1], this); } exports.default = { visit: visit };