From 2f93859ec3046920aedad7dfbb5f8935187e68b2 Mon Sep 17 00:00:00 2001 From: Georg Romstorfer Date: Fri, 25 Dec 2020 21:07:07 +0100 Subject: [PATCH] Add Ansi.apply method --- src/main/java/org/fusesource/jansi/Ansi.java | 15 +++++++++++++++ src/test/java/org/fusesource/jansi/AnsiTest.java | 9 +++++++++ 2 files changed, 24 insertions(+) diff --git a/src/main/java/org/fusesource/jansi/Ansi.java b/src/main/java/org/fusesource/jansi/Ansi.java index 2a5a85b6..285bb16f 100644 --- a/src/main/java/org/fusesource/jansi/Ansi.java +++ b/src/main/java/org/fusesource/jansi/Ansi.java @@ -151,6 +151,10 @@ public int value() { } } + public interface Consumer { + void apply(Ansi ansi); + } + public static final String DISABLE = Ansi.class.getName() + ".disable"; private static Callable detector = new Callable() { @@ -737,6 +741,17 @@ public Ansi format(String pattern, Object... args) { return this; } + /** + * Applies another function to this Ansi instance. + * + * @param fun the function to apply + * @return this Ansi instance + */ + public Ansi apply(Consumer fun) { + fun.apply(this); + return this; + } + @Override public String toString() { flushAttributes(); diff --git a/src/test/java/org/fusesource/jansi/AnsiTest.java b/src/test/java/org/fusesource/jansi/AnsiTest.java index 266b0072..defd9ae4 100644 --- a/src/test/java/org/fusesource/jansi/AnsiTest.java +++ b/src/test/java/org/fusesource/jansi/AnsiTest.java @@ -52,4 +52,13 @@ public void testClone() throws CloneNotSupportedException { assertEquals(ansi.a("test").reset().toString(), clone.a("test").reset().toString()); } + + @Test + public void testApply() { + assertEquals("test", Ansi.ansi().apply(new Ansi.Consumer() { + public void apply(Ansi ansi) { + ansi.a("test"); + } + }).toString()); + } } \ No newline at end of file