import java.util.function.Function;

public class PipelineTeks {
    public static void main(String[] args) {
        // Empat tahap kecil, masing-masing satu tanggung jawab
        Function<String, String> rapikan = String::trim;
        Function<String, String> kecilkan = String::toLowerCase;
        Function<String, String[]> pecah = teks -> teks.split(" ");
        Function<String[], Integer> hitung = kata -> kata.length;

        // Pipeline: keluaran setiap tahap mengalir ke tahap berikutnya
        Function<String, Integer> jumlahKata = rapikan
                .andThen(kecilkan)
                .andThen(pecah)
                .andThen(hitung);

        String masukan = "  Belajar Function Composition di Java  ";
        System.out.println("Jumlah kata : " + jumlahKata.apply(masukan));
        System.out.println("Tahap rapikan saja : [" + rapikan.apply(masukan) + "]");
    }
}
