Skip to content
This repository was archived by the owner on May 8, 2024. It is now read-only.

Commit 63615e9

Browse files
Merge branch 'release-1.1.0' into bugfix/performance
2 parents f478440 + 79d651c commit 63615e9

File tree

2 files changed

+26
-4
lines changed

2 files changed

+26
-4
lines changed

src/main/kotlin/com/stackspot/model/Condition.kt

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package com.stackspot.model
1818

1919
import com.intellij.openapi.ui.naturalSorted
20-
2120
data 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

src/main/kotlin/com/stackspot/model/Input.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ data class Input(
2525
val default: Any?,
2626
val condition: Condition?,
2727
val required: Boolean = false,
28-
val items: Set<String>? = null,
28+
val items: List<String>? = null,
2929
val pattern: String? = null,
3030
val help: String? = null
3131
) {

0 commit comments

Comments
 (0)