@@ -28,13 +28,14 @@ fun getTupleName(numOfValues: Int) = when (numOfValues) {
28
28
else -> " Tuple$numOfValues "
29
29
}
30
30
31
- fun getArgName (numOfValues : Int , index : Int ) = when (index ) {
32
- 1 -> if (numOfValues <= 3 ) " first" else " a $index "
33
- 2 -> if (numOfValues <= 3 ) " second" else " a $index "
34
- 3 -> if (numOfValues <= 3 ) " third" else " a $index "
35
- else -> " a $index "
31
+ fun getArgName (argNum : Int ) = when (argNum ) {
32
+ 1 -> " first"
33
+ 2 -> " second"
34
+ 3 -> " third"
35
+ else -> error( " should only be used for Pair and Triple " )
36
36
}
37
37
38
+
38
39
fun withOrdinalIndicator (index : Int ) = index.toString() + when (index) {
39
40
1 -> " st"
40
41
2 -> " nd"
@@ -106,7 +107,7 @@ val generate: TaskProvider<Task> = tasks.register("generate") {
106
107
val tupleName = getTupleName(upperNumber)
107
108
val tupleLike = createStringBuilder(packageName)
108
109
val tuple = createStringBuilder(packageName)
109
- val properties = numbers.joinToString(" , " ) { getArgName(upperNumber, it) }
110
+ val properties = numbers.joinToString(" , " ) { " a $it " }
110
111
111
112
tupleLike.append(
112
113
"""
@@ -154,7 +155,7 @@ val generate: TaskProvider<Task> = tasks.register("generate") {
154
155
| *
155
156
| * ${numbers.joinToString(" \n * " ) { " @param A$it The type of the ${withOrdinalIndicator(it)} component of this $tupleName ." }}
156
157
| *
157
- | * ${numbers.joinToString(" \n * " ) { " @param a$it the ${withOrdinalIndicator(it)} component of this $tupleName ." }}
158
+ | * ${numbers.joinToString(" \n * " ) { " @property a$it the ${withOrdinalIndicator(it)} component of this $tupleName ." }}
158
159
| *
159
160
| * @since 2.0.0
160
161
| */
@@ -294,7 +295,7 @@ val generate: TaskProvider<Task> = tasks.register("generate") {
294
295
295
296
if (upperNumber2 > 1 ) {
296
297
val properties2 = numbers2.joinToString(" , " ) {
297
- " $tupleNameParamLowercase .${getArgName(upperNumber2, it)} "
298
+ " $tupleNameParamLowercase .a $it "
298
299
}
299
300
300
301
tupleGlue.append(
@@ -319,29 +320,36 @@ val generate: TaskProvider<Task> = tasks.register("generate") {
319
320
numbers.forEach { argNum ->
320
321
val modifiedTypeArgs = numbers.joinToString(" , " ) { " A$it " + if (it == argNum) " New" else " " }
321
322
val args = numbers.joinToString(" , " ) { arg ->
322
- getArgName(upperNumber, arg) .let {
323
+ " a $ arg" .let {
323
324
if (arg == argNum) " transform($it )" else it
324
325
}
325
326
}
326
327
327
- val argNameToMap = getArgName(upperNumber, argNum)
328
- val argNameCapitalized = argNameToMap.replaceFirstChar {
329
- if (it.isLowerCase()) it.titlecase(Locale .getDefault()) else it.toString()
328
+ fun appendMap (argNameToMap : String , argNameCapitalized : String ) =
329
+ tupleMap.append(
330
+ """
331
+ |/**
332
+ |* Maps [$tupleName .$argNameToMap ] with the given [transform] function and returns a new [$tupleName ].
333
+ |*
334
+ |* @since 2.0.0
335
+ |*/
336
+ |fun <$typeArgs , A${argNum} New> $tupleName <$typeArgs >.map$argNameCapitalized (
337
+ | transform: (A$argNum ) -> A${argNum} New
338
+ |): $tupleName <$modifiedTypeArgs > =
339
+ | $tupleName ($args )
340
+ |
341
+ """ .trimMargin()
342
+ ).appendLine()
343
+
344
+ appendMap(" a$argNum " , " A$argNum " )
345
+
346
+ if (upperNumber <= 3 ) {
347
+ val argNameToMap = getArgName(argNum)
348
+ val argNameCapitalized = argNameToMap.replaceFirstChar {
349
+ if (it.isLowerCase()) it.titlecase(Locale .getDefault()) else it.toString()
350
+ }
351
+ appendMap(argNameToMap, argNameCapitalized)
330
352
}
331
- tupleMap.append(
332
- """
333
- |/**
334
- |* Maps [$tupleName .$argNameToMap ] with the given [transform] function and returns a new [$tupleName ].
335
- |*
336
- |* @since 2.0.0
337
- |*/
338
- |fun <$typeArgs , A${argNum} New> $tupleName <$typeArgs >.map$argNameCapitalized (
339
- | transform: (A$argNum ) -> A${argNum} New
340
- |): $tupleName <$modifiedTypeArgs > =
341
- | $tupleName ($args )
342
- |
343
- """ .trimMargin()
344
- ).appendLine()
345
353
}
346
354
}
347
355
@@ -1052,7 +1060,7 @@ val generateTest: TaskProvider<Task> = tasks.register("generateTest") {
1052
1060
val valsAsArgs = numbers.joinToString(" , " ) { " a$it " }
1053
1061
val tupleCreation = """ $tupleName ($valsAsArgs )"""
1054
1062
fun sameFeatureCheck (num : Int , indent : String ) = (1 .. num).joinToString(" \n $indent " ) {
1055
- " feature { f(it::${getArgName(num, it)} ) }.toBeTheInstance(a${it} )"
1063
+ " feature { f(it::a $it ) }.toBeTheInstance(a${it} )"
1056
1064
}
1057
1065
1058
1066
val tupleMapTest = createStringBuilder(" $packageName .map" )
@@ -1090,20 +1098,16 @@ val generateTest: TaskProvider<Task> = tasks.register("generateTest") {
1090
1098
).appendLine().appendLine()
1091
1099
1092
1100
numbers.forEach { argNum ->
1093
- val argNameToMap = getArgName(upperNumber, argNum)
1094
- val argNameCapitalized = argNameToMap.replaceFirstChar {
1095
- if (it.isLowerCase()) it.titlecase(Locale .getDefault()) else it.toString()
1096
- }
1097
- listOf (1 , 2 , 3 ).withIndex()
1098
1101
1099
1102
val tupleListResult = " $tupleName (${
1100
1103
argValuesNotMapped.take(upperNumber).withIndex().joinToString(" , " ) { (index, value) ->
1101
1104
if (index + 1 == argNum) value else " a${index + 1 } "
1102
1105
}
1103
1106
} )"
1104
1107
1105
- tupleMapTest.append(
1106
- """
1108
+ fun appendMapTest (argNameCapitalized : String ) =
1109
+ tupleMapTest.append(
1110
+ """
1107
1111
| @Test
1108
1112
| fun map${argNameCapitalized} __identity__returns_equal_$tupleName () {
1109
1113
| $vals
@@ -1126,14 +1130,29 @@ val generateTest: TaskProvider<Task> = tasks.register("generateTest") {
1126
1130
| ) {
1127
1131
| toEqual($tupleListResult )
1128
1132
| ${
1129
- numbers.filter { it != argNum }.joinToString(" \n " ) {
1130
- " feature { f(it::${getArgName(upperNumber, it)} ) }.toBeTheInstance(a${it} )"
1133
+ numbers.filter { it != argNum }.joinToString(" \n " ) {
1134
+ " feature { f(it::a$it ) }.toBeTheInstance(a${it} )"
1135
+ }
1131
1136
}
1132
- }
1133
1137
| }
1134
1138
| }
1135
1139
""" .trimMargin()
1136
- ).appendLine().appendLine()
1140
+ ).appendLine().appendLine()
1141
+
1142
+ appendMapTest(" A$argNum " )
1143
+
1144
+ if (upperNumber <= 3 ){
1145
+ val argNameToMap = getArgName(argNum)
1146
+ val argNameCapitalized = argNameToMap.replaceFirstChar {
1147
+ if (it.isLowerCase()) it.titlecase(Locale .getDefault()) else it.toString()
1148
+ }
1149
+ appendMapTest(argNameCapitalized)
1150
+ }
1151
+
1152
+
1153
+
1154
+
1155
+
1137
1156
}
1138
1157
1139
1158
toTupleTest.append(
0 commit comments