in gshell-support/gshell-clp/src/main/java/org/apache/geronimo/gshell/clp/Printer.java [235:294]
private void printHandler(final PrintWriter out, final Handler handler, final int len) {
assert out != null;
assert handler != null;
//
// TODO: Expose these as configurables
//
int terminalWidth = 80;
String prefix = " ";
String separator = " ";
int prefixSeperatorWidth = prefix.length() + separator.length();
int descriptionWidth = terminalWidth - len - prefixSeperatorWidth;
// Only render if there is help-text, else its hidden
String desc = getHelpText(handler.descriptor);
if (desc == null) {
return;
}
// Render the prefix and syntax
String nameAndToken = getNameAndToken(handler);
out.print(prefix);
out.print(nameAndToken);
// Render the seperator
for (int i = nameAndToken.length(); i < len; ++i) {
out.print(' ');
}
out.print(separator);
// Render the description splitting it over multipule lines if its longer than column size
while (desc != null && desc.length() > 0) {
//
// FIXME: Only split on words
//
int i = desc.indexOf('\n');
if (i >= 0 && i <= descriptionWidth) {
out.println(desc.substring(0, i));
desc = desc.substring(i + 1);
if (desc.length() > 0) {
indent(out, len + prefixSeperatorWidth);
}
continue;
}
if (desc.length() <= descriptionWidth) {
out.println(desc);
break;
}
out.println(desc.substring(0, descriptionWidth));
desc = desc.substring(descriptionWidth);
indent(out, len + prefixSeperatorWidth);
}
}