1717package com.stackspot.model
1818
1919import com.intellij.openapi.ui.naturalSorted
20-
2120data class Condition (val variable : String , val operator : String , var value : Any ) {
2221
2322 companion object {
@@ -30,7 +29,9 @@ data class Condition(val variable: String, val operator: String, var value: Any)
3029 " <=" to ::lte,
3130 " containsAny" to ::containsAny,
3231 " containsAll" to ::containsAll,
33- " containsOnly" to ::containsOnly
32+ " containsOnly" to ::containsOnly,
33+ " notContainsAny" to ::notContainsAny,
34+ " notContainsAll" to ::notContainsAll
3435 )
3536
3637 private fun eq (variableValue : Any , value : Any ): Boolean =
@@ -67,12 +68,33 @@ data class Condition(val variable: String, val operator: String, var value: Any)
6768 }
6869 }
6970
71+ private fun notContainsAny (variableValue : Any , value : Any ): Boolean {
72+ return when {
73+ variableValue is String && value is ArrayList <* > -> value.none { v ->
74+ (variableValue.toMutableSet()).contains(v)
75+ }
76+
77+ variableValue is String && value is String -> ! variableValue.contains(value)
78+ variableValue is Set <* > && value is String -> ! variableValue.contains(value)
79+ else -> (value as ArrayList <* >).none { v -> (variableValue as Set <* >).contains(v) }
80+ }
81+ }
82+
7083 private fun containsAll (variableValue : Any , value : Any ): Boolean {
7184 return when {
7285 variableValue is String && value is ArrayList <* > -> variableValue.toMutableSet().containsAll(value)
7386 variableValue is String && value is String -> variableValue == value
7487 variableValue is Set <* > && value is String -> variableValue.containsAll(value.toMutableSet())
75- else -> (variableValue as Set <* > ).containsAll(value as ArrayList <* >)
88+ else -> (variableValue as Set <* >).containsAll(value as ArrayList <* >)
89+ }
90+ }
91+
92+ private fun notContainsAll (variableValue : Any , value : Any ): Boolean {
93+ return when {
94+ variableValue is String && value is ArrayList <* > -> ! variableValue.toMutableSet().containsAll(value)
95+ variableValue is String && value is String -> variableValue != value
96+ variableValue is Set <* > && value is String -> ! variableValue.containsAll(value.toMutableSet())
97+ else -> ! (variableValue as Set <* >).containsAll(value as ArrayList <* >)
7698 }
7799 }
78100
0 commit comments