// Decompiled by: Fernflower v0.6 // Date: 16.01.2011 23:15:43 // Copyright: 2008-2009, Stiver // Home page: http://www.reversed-java.com package org.apache.commons.cli; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.List; import org.apache.commons.cli.Option; import org.apache.commons.cli.OptionGroup; import org.apache.commons.cli.Options; public class HelpFormatter { public static final int DEFAULT_WIDTH = 74; public static final int DEFAULT_LEFT_PAD = 1; public static final int DEFAULT_DESC_PAD = 3; public static final String DEFAULT_SYNTAX_PREFIX = "usage: "; public static final String DEFAULT_OPT_PREFIX = "-"; public static final String DEFAULT_LONG_OPT_PREFIX = "--"; public static final String DEFAULT_ARG_NAME = "arg"; public int defaultWidth = 74; public int defaultLeftPad = 1; public int defaultDescPad = 3; public String defaultSyntaxPrefix = "usage: "; public String defaultNewLine = System.getProperty("line.separator"); public String defaultOptPrefix = "-"; public String defaultLongOptPrefix = "--"; public String defaultArgName = "arg"; protected Comparator optionComparator = new HelpFormatter.OptionComparator((HelpFormatter.NamelessClass20026251)null); public void setWidth(int var1) { this.defaultWidth = var1; } public int getWidth() { return this.defaultWidth; } public void setLeftPadding(int var1) { this.defaultLeftPad = var1; } public int getLeftPadding() { return this.defaultLeftPad; } public void setDescPadding(int var1) { this.defaultDescPad = var1; } public int getDescPadding() { return this.defaultDescPad; } public void setSyntaxPrefix(String var1) { this.defaultSyntaxPrefix = var1; } public String getSyntaxPrefix() { return this.defaultSyntaxPrefix; } public void setNewLine(String var1) { this.defaultNewLine = var1; } public String getNewLine() { return this.defaultNewLine; } public void setOptPrefix(String var1) { this.defaultOptPrefix = var1; } public String getOptPrefix() { return this.defaultOptPrefix; } public void setLongOptPrefix(String var1) { this.defaultLongOptPrefix = var1; } public String getLongOptPrefix() { return this.defaultLongOptPrefix; } public void setArgName(String var1) { this.defaultArgName = var1; } public String getArgName() { return this.defaultArgName; } public Comparator getOptionComparator() { return this.optionComparator; } public void setOptionComparator(Comparator var1) { if(var1 == null) { this.optionComparator = new HelpFormatter.OptionComparator((HelpFormatter.NamelessClass20026251)null); } else { this.optionComparator = var1; } } public void printHelp(String var1, Options var2) { this.printHelp(this.defaultWidth, var1, (String)null, var2, (String)null, false); } public void printHelp(String var1, Options var2, boolean var3) { this.printHelp(this.defaultWidth, var1, (String)null, var2, (String)null, var3); } public void printHelp(String var1, String var2, Options var3, String var4) { this.printHelp(var1, var2, var3, var4, false); } public void printHelp(String var1, String var2, Options var3, String var4, boolean var5) { this.printHelp(this.defaultWidth, var1, var2, var3, var4, var5); } public void printHelp(int var1, String var2, String var3, Options var4, String var5) { this.printHelp(var1, var2, var3, var4, var5, false); } public void printHelp(int var1, String var2, String var3, Options var4, String var5, boolean var6) { PrintWriter var7 = new PrintWriter(System.out); this.printHelp(var7, var1, var2, var3, var4, this.defaultLeftPad, this.defaultDescPad, var5, var6); var7.flush(); } public void printHelp(PrintWriter var1, int var2, String var3, String var4, Options var5, int var6, int var7, String var8) { this.printHelp(var1, var2, var3, var4, var5, var6, var7, var8, false); } public void printHelp(PrintWriter var1, int var2, String var3, String var4, Options var5, int var6, int var7, String var8, boolean var9) { if(var3 != null && var3.length() != 0) { if(var9) { this.printUsage(var1, var2, var3, var5); } else { this.printUsage(var1, var2, var3); } if(var4 != null && var4.trim().length() > 0) { this.printWrapped(var1, var2, var4); } this.printOptions(var1, var2, var5, var6, var7); if(var8 != null && var8.trim().length() > 0) { this.printWrapped(var1, var2, var8); } } else { throw new IllegalArgumentException("cmdLineSyntax not provided"); } } public void printUsage(PrintWriter var1, int var2, String var3, Options var4) { StringBuffer var5 = (new StringBuffer(this.defaultSyntaxPrefix)).append(var3).append(" "); ArrayList var6 = new ArrayList(); ArrayList var8 = new ArrayList(var4.getOptions()); Collections.sort(var8, this.getOptionComparator()); Iterator var9 = var8.iterator(); while(var9.hasNext()) { Option var7 = (Option)var9.next(); OptionGroup var10 = var4.getOptionGroup(var7); if(var10 != null) { if(!var6.contains(var10)) { var6.add(var10); this.appendOptionGroup(var5, var10); } } else { appendOption(var5, var7, var7.isRequired()); } if(var9.hasNext()) { var5.append(" "); } } this.printWrapped(var1, var2, var5.toString().indexOf(32) + 1, var5.toString()); } private void appendOptionGroup(StringBuffer var1, OptionGroup var2) { if(!var2.isRequired()) { var1.append("["); } ArrayList var3 = new ArrayList(var2.getOptions()); Collections.sort(var3, this.getOptionComparator()); Iterator var4 = var3.iterator(); while(var4.hasNext()) { appendOption(var1, (Option)var4.next(), true); if(var4.hasNext()) { var1.append(" | "); } } if(!var2.isRequired()) { var1.append("]"); } } private static void appendOption(StringBuffer var0, Option var1, boolean var2) { if(!var2) { var0.append("["); } if(var1.getOpt() != null) { var0.append("-").append(var1.getOpt()); } else { var0.append("--").append(var1.getLongOpt()); } if(var1.hasArg() && var1.hasArgName()) { var0.append(" <").append(var1.getArgName()).append(">"); } if(!var2) { var0.append("]"); } } public void printUsage(PrintWriter var1, int var2, String var3) { int var4 = var3.indexOf(32) + 1; this.printWrapped(var1, var2, this.defaultSyntaxPrefix.length() + var4, this.defaultSyntaxPrefix + var3); } public void printOptions(PrintWriter var1, int var2, Options var3, int var4, int var5) { StringBuffer var6 = new StringBuffer(); this.renderOptions(var6, var2, var3, var4, var5); var1.println(var6.toString()); } public void printWrapped(PrintWriter var1, int var2, String var3) { this.printWrapped(var1, var2, 0, var3); } public void printWrapped(PrintWriter var1, int var2, int var3, String var4) { StringBuffer var5 = new StringBuffer(var4.length()); this.renderWrappedText(var5, var2, var3, var4); var1.println(var5.toString()); } protected StringBuffer renderOptions(StringBuffer var1, int var2, Options var3, int var4, int var5) { String var6 = this.createPadding(var4); String var7 = this.createPadding(var5); int var8 = 0; ArrayList var10 = new ArrayList(); List var11 = var3.helpOptions(); Collections.sort(var11, this.getOptionComparator()); StringBuffer var9; for(Iterator var12 = var11.iterator(); var12.hasNext(); var8 = var9.length() > var8?var9.length():var8) { Option var13 = (Option)var12.next(); var9 = new StringBuffer(8); if(var13.getOpt() == null) { var9.append(var6).append(" " + this.defaultLongOptPrefix).append(var13.getLongOpt()); } else { var9.append(var6).append(this.defaultOptPrefix).append(var13.getOpt()); if(var13.hasLongOpt()) { var9.append(',').append(this.defaultLongOptPrefix).append(var13.getLongOpt()); } } if(var13.hasArg()) { if(var13.hasArgName()) { var9.append(" <").append(var13.getArgName()).append(">"); } else { var9.append(' '); } } var10.add(var9); } int var16 = 0; Iterator var17 = var11.iterator(); while(var17.hasNext()) { Option var14 = (Option)var17.next(); var9 = new StringBuffer(var10.get(var16++).toString()); if(var9.length() < var8) { var9.append(this.createPadding(var8 - var9.length())); } var9.append(var7); int var15 = var8 + var5; if(var14.getDescription() != null) { var9.append(var14.getDescription()); } this.renderWrappedText(var1, var2, var15, var9.toString()); if(var17.hasNext()) { var1.append(this.defaultNewLine); } } return var1; } protected StringBuffer renderWrappedText(StringBuffer var1, int var2, int var3, String var4) { int var5 = this.findWrapPos(var4, var2, 0); if(var5 == -1) { var1.append(this.rtrim(var4)); return var1; } else { var1.append(this.rtrim(var4.substring(0, var5))).append(this.defaultNewLine); if(var3 >= var2) { var3 = 1; } String var6 = this.createPadding(var3); while(true) { var4 = var6 + var4.substring(var5).trim(); var5 = this.findWrapPos(var4, var2, 0); if(var5 == -1) { var1.append(var4); return var1; } if(var4.length() > var2 && var5 == var3 - 1) { var5 = var2; } var1.append(this.rtrim(var4.substring(0, var5))).append(this.defaultNewLine); } } } protected int findWrapPos(String var1, int var2, int var3) { boolean var4 = true; int var6; if(((var6 = var1.indexOf(10, var3)) == -1 || var6 > var2) && ((var6 = var1.indexOf(9, var3)) == -1 || var6 > var2)) { if(var3 + var2 >= var1.length()) { return -1; } else { char var5; for(var6 = var3 + var2; var6 >= var3 && (var5 = var1.charAt(var6)) != 32 && var5 != 10 && var5 != 13; --var6) { ; } if(var6 > var3) { return var6; } else { for(var6 = var3 + var2; var6 <= var1.length() && (var5 = var1.charAt(var6)) != 32 && var5 != 10 && var5 != 13; ++var6) { ; } return var6 == var1.length()?-1:var6; } } } else { return var6 + 1; } } protected String createPadding(int var1) { StringBuffer var2 = new StringBuffer(var1); for(int var3 = 0; var3 < var1; ++var3) { var2.append(' '); } return var2.toString(); } protected String rtrim(String var1) { if(var1 != null && var1.length() != 0) { int var2; for(var2 = var1.length(); var2 > 0 && Character.isWhitespace(var1.charAt(var2 - 1)); --var2) { ; } return var1.substring(0, var2); } else { return var1; } } private static class OptionComparator implements Comparator { private OptionComparator() { } public int compare(Object var1, Object var2) { Option var3 = (Option)var1; Option var4 = (Option)var2; return var3.getKey().compareToIgnoreCase(var4.getKey()); } // $FF: synthetic method OptionComparator(HelpFormatter.NamelessClass20026251 var1) { this(); } } // $FF: synthetic class static class NamelessClass20026251 { } }