@@ -249,7 +249,7 @@ class ConditionEvaluator {
249249 /// This function is just a case statement that handles all the possible operators
250250 ///
251251 /// There are basic comparison operators in the form attributeValue {op} conditionValue
252- func isEvalOperatorCondition( operatorKey: String , attributeValue: JSON ? , conditionValue: JSON , savedGroups: JSON ? = nil ) -> Bool {
252+ func isEvalOperatorCondition( operatorKey: String , attributeValue: JSON , conditionValue: JSON , savedGroups: JSON ? = nil ) -> Bool {
253253 let conditionJson = JSON ( conditionValue)
254254 // Evaluate TYPE operator - whether both are of same type
255255 if operatorKey == " $type " {
@@ -264,9 +264,9 @@ class ConditionEvaluator {
264264 // Evaluate EXISTS operator - whether condition contains attribute
265265 if operatorKey == " $exists " {
266266 let targetPrimitiveValue = conditionJson. stringValue
267- if targetPrimitiveValue == " false " && attributeValue == nil {
267+ if targetPrimitiveValue == " false " && attributeValue == . null {
268268 return true
269- } else if targetPrimitiveValue == " true " && attributeValue != nil {
269+ } else if targetPrimitiveValue == " true " && attributeValue != . null {
270270 return true
271271 }
272272 }
@@ -280,16 +280,16 @@ class ConditionEvaluator {
280280 }
281281 case " $exists " :
282282 let targetPrimitiveValue = conditionJson. stringValue
283- if targetPrimitiveValue == " false " && attributeValue == nil {
283+ if targetPrimitiveValue == " false " && attributeValue == . null {
284284 return true
285- } else if targetPrimitiveValue == " true " && attributeValue != nil {
285+ } else if targetPrimitiveValue == " true " && attributeValue != . null {
286286 return true
287287 }
288288 default : break
289289 }
290290
291291 /// There are three operators where conditionValue is an array
292- if let conditionValue = conditionJson. array, let attributeValue = attributeValue {
292+ if let conditionValue = conditionJson. array, attributeValue != . null {
293293 switch operatorKey {
294294 case " $in " :
295295 return Common . isIn ( actual: attributeValue, expected: conditionValue)
@@ -317,7 +317,7 @@ class ConditionEvaluator {
317317 }
318318 default : break
319319 }
320- } else if let attribute = attributeValue? . array {
320+ } else if let attribute = attributeValue. array {
321321 switch operatorKey {
322322 // Evaluate ELEMMATCH operator - whether condition matches attribute
323323 case " $elemMatch " :
@@ -332,36 +332,36 @@ class ConditionEvaluator {
332332 let sourcePrimitiveValue = attributeValue
333333 switch operatorKey {
334334 case " $veq " :
335- if let attributeString = attributeValue? . string, let conditionString = conditionValue. string {
335+ if let attributeString = attributeValue. string, let conditionString = conditionValue. string {
336336 return Utils . paddedVersionString ( input: attributeString) == Utils . paddedVersionString ( input: conditionString)
337337 }
338338 case " $vne " :
339- if let attributeString = attributeValue? . string, let conditionString = conditionValue. string {
339+ if let attributeString = attributeValue. string, let conditionString = conditionValue. string {
340340 return Utils . paddedVersionString ( input: attributeString) != Utils . paddedVersionString ( input: conditionString)
341341 }
342342 case " $vgt " :
343- if let attributeString = attributeValue? . string, let conditionString = conditionValue. string {
343+ if let attributeString = attributeValue. string, let conditionString = conditionValue. string {
344344 return Utils . paddedVersionString ( input: attributeString) > Utils . paddedVersionString ( input: conditionString)
345345 }
346346 case " $vgte " :
347- if let attributeString = attributeValue? . string, let conditionString = conditionValue. string {
347+ if let attributeString = attributeValue. string, let conditionString = conditionValue. string {
348348 return Utils . paddedVersionString ( input: attributeString) >= Utils . paddedVersionString ( input: conditionString)
349349 }
350350 case " $vlt " :
351- if let attributeString = attributeValue? . string, let conditionString = conditionValue. string {
351+ if let attributeString = attributeValue. string, let conditionString = conditionValue. string {
352352 return Utils . paddedVersionString ( input: attributeString) < Utils . paddedVersionString ( input: conditionString)
353353 }
354354 case " $vlte " :
355- if let attributeString = attributeValue? . string, let conditionString = conditionValue. string {
355+ if let attributeString = attributeValue. string, let conditionString = conditionValue. string {
356356 return Utils . paddedVersionString ( input: attributeString) <= Utils . paddedVersionString ( input: conditionString)
357357 }
358358 case " $inGroup " :
359- if let attributeString = attributeValue , let conditionString = conditionValue. string {
360- return Common . isIn ( actual: attributeString , expected: savedGroups ? [ conditionString] . array ?? [ ] )
359+ if attributeValue != . null , let conditionString = conditionValue. string {
360+ return Common . isIn ( actual: attributeValue , expected: savedGroups ? [ conditionString] . array ?? [ ] )
361361 }
362362 case " $notInGroup " :
363- if let attributeString = attributeValue , let conditionString = conditionValue. string {
364- return !Common. isIn ( actual: attributeString , expected: savedGroups ? [ conditionString] . array ?? [ ] )
363+ if attributeValue != . null , let conditionString = conditionValue. string {
364+ return !Common. isIn ( actual: attributeValue , expected: savedGroups ? [ conditionString] . array ?? [ ] )
365365 }
366366 // Evaluate EQ operator - whether condition equals to attribute
367367 case " $eq " :
@@ -375,36 +375,36 @@ class ConditionEvaluator {
375375 let conditionDoubleOrNull = Utils . convertJsonToDouble ( from: conditionValue) {
376376 return attributeDoubleOrNull < conditionDoubleOrNull
377377 }
378- return sourcePrimitiveValue ?? 0.0 < targetPrimitiveValue
378+ return sourcePrimitiveValue < targetPrimitiveValue
379379 // Evaluate LTE operator - whether attribute less than or equal to condition
380380 case " $lte " :
381381 if let attributeDoubleOrNull = Utils . convertJsonToDouble ( from: attributeValue) ,
382382 let conditionDoubleOrNull = Utils . convertJsonToDouble ( from: conditionValue) {
383383 return attributeDoubleOrNull <= conditionDoubleOrNull
384384 }
385- return sourcePrimitiveValue ?? 0.0 <= targetPrimitiveValue
385+ return sourcePrimitiveValue <= targetPrimitiveValue
386386 // Evaluate GT operator - whether attribute greater than to condition
387387 case " $gt " :
388388 if let attributeDoubleOrNull = Utils . convertJsonToDouble ( from: attributeValue) ,
389389 let conditionDoubleOrNull = Utils . convertJsonToDouble ( from: conditionValue) {
390390 return attributeDoubleOrNull > conditionDoubleOrNull
391391 }
392- return sourcePrimitiveValue ?? 0.0 > targetPrimitiveValue
392+ return sourcePrimitiveValue > targetPrimitiveValue
393393 // Evaluate GTE operator - whether attribute greater than or equal to condition
394394 case " $gte " :
395395 if let attributeDoubleOrNull = Utils . convertJsonToDouble ( from: attributeValue) ,
396396 let conditionDoubleOrNull = Utils . convertJsonToDouble ( from: conditionValue) {
397397 return attributeDoubleOrNull >= conditionDoubleOrNull
398398 }
399- return sourcePrimitiveValue ?? 0.0 >= targetPrimitiveValue
399+ return sourcePrimitiveValue >= targetPrimitiveValue
400400 // Evaluate REGEX operator - whether attribute contains condition regex
401401 case " $regex " :
402402 let targetPrimitiveValueString = conditionValue. stringValue
403- let sourcePrimitiveValueString = attributeValue? . stringValue
404- if isContains ( source: sourcePrimitiveValueString ?? " " , target: targetPrimitiveValueString) {
403+ let sourcePrimitiveValueString = attributeValue. stringValue
404+ if isContains ( source: sourcePrimitiveValueString, target: targetPrimitiveValueString) {
405405 return true
406406 }
407- return sourcePrimitiveValueString? . contains ( targetPrimitiveValueString) ?? false
407+ return sourcePrimitiveValueString. contains ( targetPrimitiveValueString)
408408
409409 default : break
410410 }
0 commit comments