(exprOption, getters)
| 90987 | } |
| 90988 | |
| 90989 | function parseRelationalOption(exprOption, getters) { |
| 90990 | var errMsg = ''; |
| 90991 | var valueGetterParam = getters.prepareGetValue(exprOption); |
| 90992 | var subCondList = []; |
| 90993 | var exprKeys = keys(exprOption); |
| 90994 | var parserName = exprOption.parser; |
| 90995 | var valueParser = parserName ? getRawValueParser(parserName) : null; |
| 90996 | |
| 90997 | for (var i = 0; i < exprKeys.length; i++) { |
| 90998 | var keyRaw = exprKeys[i]; |
| 90999 | |
| 91000 | if (keyRaw === 'parser' || getters.valueGetterAttrMap.get(keyRaw)) { |
| 91001 | continue; |
| 91002 | } |
| 91003 | |
| 91004 | var op = hasOwn(RELATIONAL_EXPRESSION_OP_ALIAS_MAP, keyRaw) ? RELATIONAL_EXPRESSION_OP_ALIAS_MAP[keyRaw] : keyRaw; |
| 91005 | var condValueRaw = exprOption[keyRaw]; |
| 91006 | var condValueParsed = valueParser ? valueParser(condValueRaw) : condValueRaw; |
| 91007 | var evaluator = createFilterComparator(op, condValueParsed) || op === 'reg' && new RegExpEvaluator(condValueParsed); |
| 91008 | |
| 91009 | if (!evaluator) { |
| 91010 | if ("development" !== 'production') { |
| 91011 | errMsg = makePrintable('Illegal relational operation: "' + keyRaw + '" in condition:', exprOption); |
| 91012 | } |
| 91013 | |
| 91014 | throwError(errMsg); |
| 91015 | } |
| 91016 | |
| 91017 | subCondList.push(evaluator); |
| 91018 | } |
| 91019 | |
| 91020 | if (!subCondList.length) { |
| 91021 | if ("development" !== 'production') { |
| 91022 | errMsg = makePrintable('Relational condition must have at least one operator.', 'Illegal condition:', exprOption); |
| 91023 | } // No relational operator always disabled in case of dangers result. |
| 91024 | |
| 91025 | |
| 91026 | throwError(errMsg); |
| 91027 | } |
| 91028 | |
| 91029 | var cond = new RelationalConditionInternal(); |
| 91030 | cond.valueGetterParam = valueGetterParam; |
| 91031 | cond.valueParser = valueParser; |
| 91032 | cond.getValue = getters.getValue; |
| 91033 | cond.subCondList = subCondList; |
| 91034 | return cond; |
| 91035 | } |
| 91036 | |
| 91037 | function isObjectNotArray(val) { |
| 91038 | return isObject(val) && !isArrayLike(val); |
no test coverage detected
searching dependent graphs…