fix: Evaluate multiple logic's with | and &. (#301)

pull/3759/head
EdwinBetanc0urt 2020-02-04 09:49:29 -04:00 committed by GitHub
parent c7f168c4a8
commit ecf2de8b19
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 16 additions and 17 deletions

View File

@ -27,9 +27,8 @@ class evaluator {
objectToEvaluate.logic.trim() === '') {
return defaultUndefined
}
let st = objectToEvaluate.logic.trim().replace('\n', '')
st = st.replace('|', '~')
const expr = /(~|&)/
const st = objectToEvaluate.logic.trim().replace('\n', '')
const expr = /(\||&)/
const stList = st.split(expr)
const it = stList.length
@ -41,7 +40,7 @@ class evaluator {
let retValue = null
let logOp = ''
stList.forEach(function(element) {
if (element === '~' || element === '&') {
if (element.trim() === '|' || element.trim() === '&') {
logOp = element
} else if (retValue === null) {
retValue = evaluator.evaluateLogicTuples({
@ -49,12 +48,12 @@ class evaluator {
conditional: element
})
} else {
if (logOp === '&' && logOp !== '') {
if (logOp.trim() === '&') {
retValue = retValue & evaluator.evaluateLogicTuples({
...objectToEvaluate,
conditional: element
})
} else if (logOp === '~' && logOp !== '') {
} else if (logOp.trim() === '|') {
retValue = retValue | evaluator.evaluateLogicTuples({
...objectToEvaluate,
conditional: element
@ -84,7 +83,7 @@ class evaluator {
if (logic === undefined) {
return _defaultUndefined
}
let expr = /^(['"@#$a-zA-Z0-9\-_\s]){0,}((<>|<=|<|=|>=|>|!=|!|\^){1,2})([\s"'@#$a-zA-Z0-9\-_]){0,}$/i
let expr = /^(['"@#$a-zA-Z0-9\-_\s]){0,}((<>|<=|<|==|=|>=|>|!=|!|\^){1,2})([\s"'@#$a-zA-Z0-9\-_]){0,}$/i
let st = expr.test(logic)
if (!st) {
@ -92,7 +91,7 @@ class evaluator {
return _defaultUndefined
}
expr = /(<>|<=|<|=|>=|>|!=|!|\^){1,2}/i
expr = /(<>|<=|<|==|=|>=|>|!=|!|\^){1,2}/i
st = logic.split(expr)
// First Part (or column name)