8000 io-to-data.21 : Extension function all the things · java-to-kotlin/code@6a736a4 · GitHub
[go: up one dir, main page]

Skip to content

Commit 6a736a4

Browse files
Duncan McGregordmcg
authored andcommitted
io-to-data.21 : Extension function all the things
1 parent 7d28515 commit 6a736a4

File tree

3 files changed

+15
-10
lines changed

3 files changed

+15
-10
lines changed

src/main/java/travelator/marketing/HighValueCustomersMain.kt

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,25 @@
11
package travelator.marketing
22

3+
import java.io.Reader
34
import java.io.Writer
45

56
fun main() {
67
System.`in`.reader().use { reader ->
78
System.out.writer().use { writer ->
8-
writer.appendLines(
9-
generate(
10-
reader.buffered().lineSequence()
11-
)
12-
)
9+
reader
10+
.asLineSequence()
11+
.toHighValueCustomerReport()
12+
.writeTo(writer)
1313
}
1414
}
1515
}
1616

17+
fun Reader.asLineSequence() = buffered().lineSequence()
18+
19+
fun Sequence<CharSequence>.writeTo(writer: Writer) {
20+
writer.appendLines(this)
21+
}
22+
1723
fun Writer.appendLines(lines: Sequence<CharSequence>): Writer {
1824
return this.also {
1925
lines.forEach(this::appendLine)

src/main/java/travelator/marketing/HighValueCustomersReport.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package travelator.marketing
22

3-
fun generate(lines: Sequence<String>): Sequence<String> {
4-
val valuableCustomers = lines
3+
fun Sequence<String>.toHighValueCustomerReport(): Sequence<String> {
4+
val valuableCustomers = this
55
.withoutHeader()
66
.map(String::toCustomerData)
77
.filter { it.score >= 10 }

src/test/java/travelator/marketing/HighValueCustomersReportTests.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,10 @@ class HighValueCustomersReportTests {
5050
inputLines: List<String>,
5151
expectedLines: List<String>
5252
) {
53+
val lines = inputLines.asSequence().constrainOnce()
5354
assertEquals(
5455
expectedLines,
55-
generate(
56-
inputLines.asSequence().constrainOnce()
57-
).toList()
56+
lines.toHighValueCustomerReport().toList()
5857
)
5958
}
6059
}

0 commit comments

Comments
 (0)
0