elliptical
Version:
Interactive natural-language interfaces
38 lines (27 loc) • 988 B
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _element = require('../element');
var _element2 = _interopRequireDefault(_element);
var _utils = require('../utils');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/** @jsx createElement */
function describe(_ref) {
let props = _ref.props;
return (0, _element2.default)('raw', { func: option => filterInput(option.text, props), limit: props.limit });
}
function* filterInput(input, props) {
for (let substring of (0, _utils.substrings)(input || '', props)) {
if (!props.filter || props.filter(substring)) {
const score = props.greedy ? 0.1 + (1 - 1 / substring.length) : 0.1 + 1 / substring.length;
yield {
words: [{ text: substring, input: true }],
result: substring,
remaining: input.substring(substring.length),
score: score
};
}
}
}
exports.default = { describe: describe };