@@ -4,6 +4,13 @@ import operation.StandardLogicOperation
4
4
import utils.asList
5
5
6
6
object JoinToString : StandardLogicOperation {
7
+ private const val ELEMENTS_ARG_INDEX = 0
8
+ private const val SEPARATOR_ARG_INDEX = 1
9
+ private const val PREFIX_ARG_INDEX = 2
10
+ private const val POSTFIX_ARG_INDEX = 3
11
+ private const val LIMIT_ARG_INDEX = 4
12
+ private const val TRUNCATED_ARG_INDEX = 5
13
+
7
14
override fun evaluateLogic (expression : Any? , data : Any? ): Any? = expression.asList.toOperationArguments()?.invoke()
8
15
9
16
private fun JoinToStringArguments.invoke () =
@@ -12,20 +19,20 @@ object JoinToString : StandardLogicOperation {
12
19
private fun List<Any?>.toOperationArguments (): JoinToStringArguments ? = kotlin.runCatching {
13
20
checkLimitArg()?.let { limit ->
14
21
JoinToStringArguments (
15
- elementsToJoin = get(0 ).asList,
16
- separator = get(1 ) as String ,
17
- prefix = get(2 ) as String ,
18
- postfix = get(3 ) as String ,
22
+ elementsToJoin = get(ELEMENTS_ARG_INDEX ).asList,
23
+ separator = get(SEPARATOR_ARG_INDEX ) as String ,
24
+ prefix = get(PREFIX_ARG_INDEX ) as String ,
25
+ postfix = get(POSTFIX_ARG_INDEX ) as String ,
19
26
limit = limit,
20
- truncated = get(5 ) as String
27
+ truncated = get(TRUNCATED_ARG_INDEX ) as String
21
28
)
22
29
}
23
30
}.fold(
24
31
onSuccess = { it },
25
32
onFailure = { null }
26
33
)
27
34
28
- private fun List<Any?>.checkLimitArg () = (get(4 ) as Number ).takeIf {
35
+ private fun List<Any?>.checkLimitArg () = (get(LIMIT_ARG_INDEX ) as Number ).takeIf {
29
36
it.toDouble() == it.toInt().toDouble()
30
37
}?.toInt()
31
38
}
0 commit comments