Skip to content

Commit 2e7eee8

Browse files
Add sixth and sixthOrNull to tenth and tenthOrNull functions
1 parent 41a7ad6 commit 2e7eee8

File tree

5 files changed

+177
-7
lines changed

5 files changed

+177
-7
lines changed

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,16 @@
44

55
### Added
66

7+
- `Iterable<T>.sixth(): T`
8+
- `Iterable<T>.sixthOrNull(): T?`
9+
- `Iterable<T>.seventh(): T`
10+
- `Iterable<T>.seventhOrNull(): T?`
11+
- `Iterable<T>.eighth(): T`
12+
- `Iterable<T>.eighthOrNull(): T?`
13+
- `Iterable<T>.ninth(): T`
14+
- `Iterable<T>.ninthOrNull(): T?`
15+
- `Iterable<T>.tenth(): T`
16+
- `Iterable<T>.tenthOrNull(): T?`
717
- `Boolean.ifFalse(block: () -> Unit): Boolean`
818
- `Boolean.ifTrue(block: () -> Unit): Boolean`
919
- `T?.ifNotNull(block: () -> Unit): T?`

kotlin-stdlib/api/android/kotlin-stdlib.api

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,17 +149,27 @@ public final class com/javiersc/kotlin/stdlib/BooleanKt {
149149
public final class com/javiersc/kotlin/stdlib/CollectionsKt {
150150
public static final fun capitalize (Ljava/lang/String;)Ljava/lang/String;
151151
public static final fun decapitalize (Ljava/lang/String;)Ljava/lang/String;
152+
public static final fun eighth (Ljava/lang/Iterable;)Ljava/lang/Object;
153+
public static final fun eighthOrNull (Ljava/lang/Iterable;)Ljava/lang/Object;
152154
public static final fun fifth (Ljava/lang/Iterable;)Ljava/lang/Object;
153155
public static final fun fifthOrNull (Ljava/lang/Iterable;)Ljava/lang/Object;
154156
public static final fun forth (Ljava/lang/Iterable;)Ljava/lang/Object;
155157
public static final fun forthOrNull (Ljava/lang/Iterable;)Ljava/lang/Object;
156158
public static final fun getIndex (Ljava/lang/Iterable;I)Ljava/lang/Object;
157159
public static final fun getIndexOrNull (Ljava/lang/Iterable;I)Ljava/lang/Object;
160+
public static final fun ninth (Ljava/lang/Iterable;)Ljava/lang/Object;
161+
public static final fun ninthOrNull (Ljava/lang/Iterable;)Ljava/lang/Object;
158162
public static final fun penultimate (Ljava/lang/Iterable;)Ljava/lang/Object;
159163
public static final fun penultimateOrNull (Ljava/lang/Iterable;)Ljava/lang/Object;
160164
public static final fun removeDuplicateEmptyLines (Ljava/util/List;)Ljava/lang/String;
161165
public static final fun second (Ljava/lang/Iterable;)Ljava/lang/Object;
162166
public static final fun secondOrNull (Ljava/lang/Iterable;)Ljava/lang/Object;
167+
public static final fun seventh (Ljava/lang/Iterable;)Ljava/lang/Object;
168+
public static final fun seventhOrNull (Ljava/lang/Iterable;)Ljava/lang/Object;
169+
public static final fun sixth (Ljava/lang/Iterable;)Ljava/lang/Object;
170+
public static final fun sixthOrNull (Ljava/lang/Iterable;)Ljava/lang/Object;
171+
public static final fun tenth (Ljava/lang/Iterable;)Ljava/lang/Object;
172+
public static final fun tenthOrNull (Ljava/lang/Iterable;)Ljava/lang/Object;
163173
public static final fun third (Ljava/lang/Iterable;)Ljava/lang/Object;
164174
public static final fun thirdOrNull (Ljava/lang/Iterable;)Ljava/lang/Object;
165175
}

kotlin-stdlib/api/jvm/kotlin-stdlib.api

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,17 +149,27 @@ public final class com/javiersc/kotlin/stdlib/BooleanKt {
149149
public final class com/javiersc/kotlin/stdlib/CollectionsKt {
150150
public static final fun capitalize (Ljava/lang/String;)Ljava/lang/String;
151151
public static final fun decapitalize (Ljava/lang/String;)Ljava/lang/String;
152+
public static final fun eighth (Ljava/lang/Iterable;)Ljava/lang/Object;
153+
public static final fun eighthOrNull (Ljava/lang/Iterable;)Ljava/lang/Object;
152154
public static final fun fifth (Ljava/lang/Iterable;)Ljava/lang/Object;
153155
public static final fun fifthOrNull (Ljava/lang/Iterable;)Ljava/lang/Object;
154156
public static final fun forth (Ljava/lang/Iterable;)Ljava/lang/Object;
155157
public static final fun forthOrNull (Ljava/lang/Iterable;)Ljava/lang/Object;
156158
public static final fun getIndex (Ljava/lang/Iterable;I)Ljava/lang/Object;
157159
public static final fun getIndexOrNull (Ljava/lang/Iterable;I)Ljava/lang/Object;
160+
public static final fun ninth (Ljava/lang/Iterable;)Ljava/lang/Object;
161+
public static final fun ninthOrNull (Ljava/lang/Iterable;)Ljava/lang/Object;
158162
public static final fun penultimate (Ljava/lang/Iterable;)Ljava/lang/Object;
159163
public static final fun penultimateOrNull (Ljava/lang/Iterable;)Ljava/lang/Object;
160164
public static final fun removeDuplicateEmptyLines (Ljava/util/List;)Ljava/lang/String;
161165
public static final fun second (Ljava/lang/Iterable;)Ljava/lang/Object;
162166
public static final fun secondOrNull (Ljava/lang/Iterable;)Ljava/lang/Object;
167+
public static final fun seventh (Ljava/lang/Iterable;)Ljava/lang/Object;
168+
public static final fun seventhOrNull (Ljava/lang/Iterable;)Ljava/lang/Object;
169+
public static final fun sixth (Ljava/lang/Iterable;)Ljava/lang/Object;
170+
public static final fun sixthOrNull (Ljava/lang/Iterable;)Ljava/lang/Object;
171+
public static final fun tenth (Ljava/lang/Iterable;)Ljava/lang/Object;
172+
public static final fun tenthOrNull (Ljava/lang/Iterable;)Ljava/lang/Object;
163173
public static final fun third (Ljava/lang/Iterable;)Ljava/lang/Object;
164174
public static final fun thirdOrNull (Ljava/lang/Iterable;)Ljava/lang/Object;
165175
}

kotlin-stdlib/common/main/kotlin/com/javiersc/kotlin/stdlib/Collections.kt

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,51 @@ public inline fun <T> Iterable<T>.fifth(): T = getIndex(5)
5656

5757
public inline fun <T> Iterable<T>.fifthOrNull(): T? = getIndexOrNull(5)
5858

59+
/**
60+
* Returns sixth element.
61+
*
62+
* Throws: `NoSuchElementException` - if the list size is 5.
63+
*/
64+
public inline fun <T> Iterable<T>.sixth(): T = getIndex(6)
65+
66+
public inline fun <T> Iterable<T>.sixthOrNull(): T? = getIndexOrNull(6)
67+
68+
/**
69+
* Returns seventh element.
70+
*
71+
* Throws: `NoSuchElementException` - if the list size is 6.
72+
*/
73+
public inline fun <T> Iterable<T>.seventh(): T = getIndex(7)
74+
75+
public inline fun <T> Iterable<T>.seventhOrNull(): T? = getIndexOrNull(7)
76+
77+
/**
78+
* Returns eighth element.
79+
*
80+
* Throws: `NoSuchElementException` - if the list size is 7.
81+
*/
82+
public inline fun <T> Iterable<T>.eighth(): T = getIndex(8)
83+
84+
public inline fun <T> Iterable<T>.eighthOrNull(): T? = getIndexOrNull(8)
85+
86+
/**
87+
* Returns ninth element.
88+
*
89+
* Throws: `NoSuchElementException` - if the list size is 8.
90+
*/
91+
public inline fun <T> Iterable<T>.ninth(): T = getIndex(9)
92+
93+
public inline fun <T> Iterable<T>.ninthOrNull(): T? = getIndexOrNull(9)
94+
95+
/**
96+
* Returns tenth element.
97+
*
98+
* Throws: `NoSuchElementException` - if the list size is 9.
99+
*/
100+
public inline fun <T> Iterable<T>.tenth(): T = getIndex(10)
101+
102+
public inline fun <T> Iterable<T>.tenthOrNull(): T? = getIndexOrNull(10)
103+
59104
/**
60105
* Returns penultimate element.
61106
*

kotlin-stdlib/common/test/kotlin/com/javiersc/kotlin/stdlib/CollectionsTest.kt

Lines changed: 102 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ import kotlin.test.assertTrue
88

99
internal class CollectionsTest {
1010

11-
private val numbers: List<Int> = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
11+
private val numbers: List<Int> = (1..10).toList()
1212
private val numbersIterable: Iterable<Int> = IntRange(1, 10)
13-
private val chars: List<Char> = listOf('A', 'B', 'C', 'D', 'E', 'F')
14-
private val charsIterable: Iterable<Char> = CharRange('A', 'F')
13+
private val chars: List<Char> = ('A'..'Z').toList()
14+
private val charsIterable: Iterable<Char> = CharRange('A', 'Z')
1515
private val empty: List<Char> = emptyList()
1616
private val emptyIterable: Iterable<Char> = CharRange.EMPTY
1717

@@ -89,17 +89,112 @@ internal class CollectionsTest {
8989
assertTrue { emptyIterable.fifthOrNull() == null }
9090
}
9191

92+
@Test
93+
fun collection_sixth() {
94+
assertTrue { numbers.sixth() == 6 }
95+
assertTrue { numbersIterable.sixth() == 6 }
96+
assertTrue { numbers.sixthOrNull() == 6 }
97+
assertTrue { numbersIterable.sixthOrNull() == 6 }
98+
99+
assertTrue { chars.sixth() == 'F' }
100+
assertTrue { charsIterable.sixth() == 'F' }
101+
assertTrue { chars.sixthOrNull() == 'F' }
102+
assertTrue { charsIterable.sixthOrNull() == 'F' }
103+
104+
assertFailsWith<NoSuchElementException> { empty.sixth() }
105+
assertFailsWith<NoSuchElementException> { emptyIterable.sixth() }
106+
107+
assertTrue { empty.sixthOrNull() == null }
108+
assertTrue { emptyIterable.sixthOrNull() == null }
109+
}
110+
111+
@Test
112+
fun collection_seventh() {
113+
assertTrue { numbers.seventh() == 7 }
114+
assertTrue { numbersIterable.seventh() == 7 }
115+
assertTrue { numbers.seventhOrNull() == 7 }
116+
assertTrue { numbersIterable.seventhOrNull() == 7 }
117+
118+
assertTrue { chars.seventh() == 'G' }
119+
assertTrue { charsIterable.seventh() == 'G' }
120+
assertTrue { chars.seventhOrNull() == 'G' }
121+
assertTrue { charsIterable.seventhOrNull() == 'G' }
122+
123+
assertFailsWith<NoSuchElementException> { empty.seventh() }
124+
assertFailsWith<NoSuchElementException> { emptyIterable.seventh() }
125+
126+
assertTrue { empty.seventhOrNull() == null }
127+
assertTrue { emptyIterable.seventhOrNull() == null }
128+
}
129+
130+
@Test
131+
fun collection_eighth() {
132+
assertTrue { numbers.eighth() == 8 }
133+
assertTrue { numbersIterable.eighth() == 8 }
134+
assertTrue { numbers.eighthOrNull() == 8 }
135+
assertTrue { numbersIterable.eighthOrNull() == 8 }
136+
137+
assertTrue { chars.eighth() == 'H' }
138+
assertTrue { charsIterable.eighth() == 'H' }
139+
assertTrue { chars.eighthOrNull() == 'H' }
140+
assertTrue { charsIterable.eighthOrNull() == 'H' }
141+
142+
assertFailsWith<NoSuchElementException> { empty.eighth() }
143+
assertFailsWith<NoSuchElementException> { emptyIterable.eighth() }
144+
145+
assertTrue { empty.eighthOrNull() == null }
146+
assertTrue { emptyIterable.eighthOrNull() == null }
147+
}
148+
149+
@Test
150+
fun collection_ninth() {
151+
assertTrue { numbers.ninth() == 9 }
152+
assertTrue { numbersIterable.ninth() == 9 }
153+
assertTrue { numbers.ninthOrNull() == 9 }
154+
assertTrue { numbersIterable.ninthOrNull() == 9 }
155+
156+
assertTrue { chars.ninth() == 'I' }
157+
assertTrue { charsIterable.ninth() == 'I' }
158+
assertTrue { chars.ninthOrNull() == 'I' }
159+
assertTrue { charsIterable.ninthOrNull() == 'I' }
160+
161+
assertFailsWith<NoSuchElementException> { empty.ninth() }
162+
assertFailsWith<NoSuchElementException> { emptyIterable.ninth() }
163+
164+
assertTrue { empty.ninthOrNull() == null }
165+
assertTrue { emptyIterable.ninthOrNull() == null }
166+
}
167+
168+
@Test
169+
fun collection_tenth() {
170+
assertTrue { numbers.tenth() == 10 }
171+
assertTrue { numbersIterable.tenth() == 10 }
172+
assertTrue { numbers.tenthOrNull() == 10 }
173+
assertTrue { numbersIterable.tenthOrNull() == 10 }
174+
175+
assertTrue { chars.tenth() == 'J' }
176+
assertTrue { charsIterable.tenth() == 'J' }
177+
assertTrue { chars.tenthOrNull() == 'J' }
178+
assertTrue { charsIterable.tenthOrNull() == 'J' }
179+
180+
assertFailsWith<NoSuchElementException> { empty.tenth() }
181+
assertFailsWith<NoSuchElementException> { emptyIterable.tenth() }
182+
183+
assertTrue { empty.tenthOrNull() == null }
184+
assertTrue { emptyIterable.tenthOrNull() == null }
185+
}
186+
92187
@Test
93188
fun collection_penultimate() {
94189
assertTrue { numbers.penultimate() == 9 }
95190
assertTrue { numbersIterable.penultimate() == 9 }
96191
assertTrue { numbers.penultimateOrNull() == 9 }
97192
assertTrue { numbersIterable.penultimateOrNull() == 9 }
98193

99-
assertTrue { chars.penultimate() == 'E' }
100-
assertTrue { charsIterable.penultimate() == 'E' }
101-
assertTrue { chars.penultimateOrNull() == 'E' }
102-
assertTrue { charsIterable.penultimateOrNull() == 'E' }
194+
assertTrue { chars.penultimate() == 'Y' }
195+
assertTrue { charsIterable.penultimate() == 'Y' }
196+
assertTrue { chars.penultimateOrNull() == 'Y' }
197+
assertTrue { charsIterable.penultimateOrNull() == 'Y' }
103198

104199
assertFailsWith<NoSuchElementException> { empty.penultimate() }
105200
assertFailsWith<NoSuchElementException> { emptyIterable.penultimate() }

0 commit comments

Comments
 (0)