Vert.x Streams utilities
Purpose
Provide tools for simple transformations of stream data (e.g. map, filter, skip).
For anything beyond simple transformations, consider using a Reactive Streams implementation like RxJava.
Dependency setup
Maven
<dependency>
  <groupId>io.github.tsegismont</groupId>
  <artifactId>streamutils</artifactId>
  <version>1.0.0</version>
</dependency> 
     Gradle Kotlin DSL
implementation("io.github.tsegismont:streamutils:1.0.0") 
     Gradle Groovy DSL:
implementation 'io.github.tsegismont:streamutils:1.0.0' 
     Usage
Java
Import the io.github.tsegismont.streamutils.Streams class.
Then use operators to transform streams. Here’s an io.vertx.core.file.AsyncFile transformation example:
// Splits file content into lines
RecordParser parser = RecordParser.newDelimited("\n", asyncFile);
// Transform line bytes to String
ReadStream<String> lines = Streams.map(parser, Buffer::toString);
// Get the line length
ReadStream<Integer> sizes = Streams.map(lines, String::length);
// Skip the first 50 lines
ReadStream<Integer> skipped = Streams.skip(sizes, 50);
// Limit result to 150 lines
ReadStream<Integer> result = Streams.limit(skipped, 150); 
     Groovy
This library comes with a Groovy extension module that adds operators to Vert.x streams. Here’s an io.vertx.core.file.AsyncFile transformation example:
// Splits file content into lines
def parser = RecordParser.newDelimited("\n", asyncFile)
def result = parser
  // Transform line bytes to String
  .map { Buffer buffer -> buffer.toString() }
  // Get the line length
  .map { String line -> line.length() }
  // Skip the first 50 lines
  .skip(50)
  // Limit result to 150 lines
  .limit(150) 
     Kotlin
This library comes with Kotlin extension functions that add operators to Vert.x streams. Here’s an io.vertx.core.file.AsyncFile transformation example:
// Splits file content into lines
val parser = RecordParser.newDelimited("\n", asyncFile)
val result = parser
  // Transform line bytes to String
  .map(Buffer::toString)
  // Get the line length
  .map(String::length)
  // Skip the first 50 lines
  .skip(50)
  // Limit result to 150 lines
  .limit(150) 
     License
Apache License version 2.0.
 JarCasting
 JarCasting