elliptical
Version:
Interactive natural-language interfaces
75 lines (59 loc) • 2.27 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.checkAgainstUniqueSet = checkAgainstUniqueSet;
exports.checkAgainstResultList = checkAgainstResultList;
exports.addToUniqueSet = addToUniqueSet;
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
var _jsonStableStringify = require('json-stable-stringify');
var _jsonStableStringify2 = _interopRequireDefault(_jsonStableStringify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var unique = Symbol.for('lacona-unique-key');
exports.default = unique;
function getUniqueValue(result) {
if (!_lodash2.default.isObject(result)) {
return result;
} else if (result[unique] != null) {
if (_lodash2.default.isFunction(result[unique])) {
return result[unique](result);
} else {
return result[unique];
}
} else {
return (0, _jsonStableStringify2.default)(result);
}
}
function checkAgainstUniqueSet(uniqueSet) {
for (var _len = arguments.length, results = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
results[_key - 1] = arguments[_key];
}
return !_lodash2.default.chain(results).reject(function (result) {
return result == null;
}).map(getUniqueValue).every(function (value) {
return uniqueSet.has(value);
}).value();
}
function checkAgainstResultList(resultList) {
for (var _len2 = arguments.length, results = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
results[_key2 - 1] = arguments[_key2];
}
return !_lodash2.default.chain(results).reject(function (result) {
return result == null;
}).map(getUniqueValue).every(function (value) {
return _lodash2.default.some(resultList, function (compareResult) {
return getUniqueValue(compareResult) === value;
});
}).value();
}
function addToUniqueSet(uniqueSet) {
for (var _len3 = arguments.length, results = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
results[_key3 - 1] = arguments[_key3];
}
_lodash2.default.chain(results).reject(function (result) {
return result == null;
}).map(getUniqueValue).forEach(function (value) {
uniqueSet.add(value);
}).value();
}