Number
class Number<Item, CellValue : Number>(val filter: (value: CellValue, filter: Filter.Number.State<CellValue>) -> Boolean = { value, filter ->
if (filter.value == null)
true
else {
val valid: Boolean = when (filter.type) {
FilterType.Equal -> value == filter.value
FilterType.NotEqual -> value != filter.value
FilterType.LargerOrEqual -> {
when (value) {
is Double -> (value as Double) >= (filter.value as Double)
is Float -> (value as Float) >= (filter.value as Float)
is Int -> (value as Int) >= (filter.value as Int)
is Long -> (value as Long) >= (filter.value as Long)
is Short -> (value as Short) >= (filter.value as Short)
is Byte -> (value as Byte) >= (filter.value as Byte)
else -> throw RuntimeException("Type not handled!")
}
}
FilterType.Larger -> {
when (value) {
is Double -> (value as Double) > (filter.value as Double)
is Float -> (value as Float) > (filter.value as Float)
is Int -> (value as Int) > (filter.value as Int)
is Long -> (value as Long) > (filter.value as Long)
is Short -> (value as Short) > (filter.value as Short)
is Byte -> (value as Byte) > (filter.value as Byte)
else -> throw RuntimeException("Type not handled!")
}
}
FilterType.SmallerOrEqual -> {
when (value) {
is Double -> (value as Double) <= (filter.value as Double)
is Float -> (value as Float) <= (filter.value as Float)
is Int -> (value as Int) <= (filter.value as Int)
is Long -> (value as Long) <= (filter.value as Long)
is Short -> (value as Short) <= (filter.value as Short)
is Byte -> (value as Byte) <= (filter.value as Byte)
else -> throw RuntimeException("Type not handled!")
}
}
FilterType.Smaller -> {
when (value) {
is Double -> (value as Double) < (filter.value as Double)
is Float -> (value as Float) < (filter.value as Float)
is Int -> (value as Int) < (filter.value as Int)
is Long -> (value as Long) < (filter.value as Long)
is Short -> (value as Short) < (filter.value as Short)
is Byte -> (value as Byte) < (filter.value as Byte)
else -> throw RuntimeException("Type not handled!")
}
}
FilterType.Contains -> value.toString().contains(filter.value.toString())
FilterType.ContainsNot -> !value.toString().contains(filter.value.toString())
FilterType.StartsWith -> value.toString().startsWith(filter.value.toString())
FilterType.EndsWith -> value.toString().endsWith(filter.value.toString())
}
valid
}
}, val instance: CellValue, initial: CellValue? = null) : Filter<Item, CellValue>
Constructors
Link copied to clipboard
constructor(filter: (value: CellValue, filter: Filter.Number.State<CellValue>) -> Boolean = { value, filter ->
if (filter.value == null)
true
else {
val valid: Boolean = when (filter.type) {
FilterType.Equal -> value == filter.value
FilterType.NotEqual -> value != filter.value
FilterType.LargerOrEqual -> {
when (value) {
is Double -> (value as Double) >= (filter.value as Double)
is Float -> (value as Float) >= (filter.value as Float)
is Int -> (value as Int) >= (filter.value as Int)
is Long -> (value as Long) >= (filter.value as Long)
is Short -> (value as Short) >= (filter.value as Short)
is Byte -> (value as Byte) >= (filter.value as Byte)
else -> throw RuntimeException("Type not handled!")
}
}
FilterType.Larger -> {
when (value) {
is Double -> (value as Double) > (filter.value as Double)
is Float -> (value as Float) > (filter.value as Float)
is Int -> (value as Int) > (filter.value as Int)
is Long -> (value as Long) > (filter.value as Long)
is Short -> (value as Short) > (filter.value as Short)
is Byte -> (value as Byte) > (filter.value as Byte)
else -> throw RuntimeException("Type not handled!")
}
}
FilterType.SmallerOrEqual -> {
when (value) {
is Double -> (value as Double) <= (filter.value as Double)
is Float -> (value as Float) <= (filter.value as Float)
is Int -> (value as Int) <= (filter.value as Int)
is Long -> (value as Long) <= (filter.value as Long)
is Short -> (value as Short) <= (filter.value as Short)
is Byte -> (value as Byte) <= (filter.value as Byte)
else -> throw RuntimeException("Type not handled!")
}
}
FilterType.Smaller -> {
when (value) {
is Double -> (value as Double) < (filter.value as Double)
is Float -> (value as Float) < (filter.value as Float)
is Int -> (value as Int) < (filter.value as Int)
is Long -> (value as Long) < (filter.value as Long)
is Short -> (value as Short) < (filter.value as Short)
is Byte -> (value as Byte) < (filter.value as Byte)
else -> throw RuntimeException("Type not handled!")
}
}
FilterType.Contains -> value.toString().contains(filter.value.toString())
FilterType.ContainsNot -> !value.toString().contains(filter.value.toString())
FilterType.StartsWith -> value.toString().startsWith(filter.value.toString())
FilterType.EndsWith -> value.toString().endsWith(filter.value.toString())
}
valid
}
}, instance: CellValue, initial: CellValue? = null)