diff --git a/src/main/java/ru/dmitriymx/shell/Formatter.java b/src/main/java/ru/dmitriymx/shell/Formatter.java new file mode 100644 index 0000000..8b5f96e --- /dev/null +++ b/src/main/java/ru/dmitriymx/shell/Formatter.java @@ -0,0 +1,9 @@ +package ru.dmitriymx.shell; + +/** + * @author DmitriyMX + * 2015 + */ +public interface Formatter { + String format(String s); +} diff --git a/src/main/java/ru/dmitriymx/shell/Shell.java b/src/main/java/ru/dmitriymx/shell/Shell.java index f7ad70f..a55401a 100644 --- a/src/main/java/ru/dmitriymx/shell/Shell.java +++ b/src/main/java/ru/dmitriymx/shell/Shell.java @@ -71,6 +71,10 @@ public class Shell { return run; } + public void setFormatter(Formatter formatter) { + newErr.setFormatter(formatter); + } + /** * Подмена стандартных SysErr и SysOut */ diff --git a/src/main/java/ru/dmitriymx/shell/ShellPrintStream.java b/src/main/java/ru/dmitriymx/shell/ShellPrintStream.java index a7ebfbe..fbc12f6 100644 --- a/src/main/java/ru/dmitriymx/shell/ShellPrintStream.java +++ b/src/main/java/ru/dmitriymx/shell/ShellPrintStream.java @@ -16,6 +16,7 @@ import java.io.PrintWriter; public class ShellPrintStream extends PrintStream { private ConsoleReader consoleReader; private PrintWriter writer; + private Formatter formatter; public ShellPrintStream(OutputStream outputStream) { super(outputStream, true); @@ -29,6 +30,10 @@ public class ShellPrintStream extends PrintStream { } } + public void setFormatter(Formatter formatter) { + this.formatter = formatter; + } + @Override public void print(String s) { println(s); @@ -38,7 +43,11 @@ public class ShellPrintStream extends PrintStream { public void println(String s) { if (consoleReader != null) { writer.print(ConsoleReader.RESET_LINE); - writer.print(s); + if (formatter != null) { + writer.print(formatter.format(s)); + } else { + writer.print(s); + } cleanTrashLine(s); writer.println(); try { @@ -49,7 +58,11 @@ public class ShellPrintStream extends PrintStream { writer.flush(); } else { super.print(ConsoleReader.RESET_LINE); - super.print(s); + if (formatter != null) { + super.print(formatter.format(s)); + } else { + super.print(s); + } } }