package ch.akuhn.util;
/**
* Indents lines while printing them.
*
* @author Adrian Kuhn, 2008/07/21
* @author Thanks to Yossi Gil for suggesting better class and method names.
*/
public class Tab {
private String s;
private final String tab;
public Tab() {
this("\t");
}
public Tab(String tab) {
this.tab = tab;
this.s = "";
}
public String begin() {
try {
return toString();
} finally {
this.more();
}
}
public String end() {
return this.less().toString();
}
public boolean isEmpty() {
return s.length() == 0;
}
public Tab less() {
if (isEmpty()) throw new IllegalStateException();
s = s.substring(0, s.length() - tab.length());
return this;
}
public Tab more() {
s += tab;
return this;
}
public String toString() {
return s;
}
}