// Decompiled by: Fernflower v0.6
// Date: 16.01.2011 23:15:46
// Copyright: 2008-2009, Stiver
// Home page: http://www.reversed-java.com
package org.apache.commons.cli;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.Parser;
public class PosixParser extends Parser {
private List tokens = new ArrayList();
private boolean eatTheRest;
private Option currentOption;
private Options options;
private void init() {
this.eatTheRest = false;
this.tokens.clear();
}
protected String[] flatten(Options var1, String[] var2, boolean var3) {
this.init();
this.options = var1;
for(Iterator var4 = Arrays.asList(var2).iterator(); var4.hasNext(); this.gobble(var4)) {
String var5 = (String)var4.next();
if(var5.startsWith("--")) {
int var6 = var5.indexOf(61);
String var7 = var6 == -1?var5:var5.substring(0, var6);
if(!var1.hasOption(var7)) {
this.processNonOptionToken(var5, var3);
} else {
this.currentOption = var1.getOption(var7);
this.tokens.add(var7);
if(var6 != -1) {
this.tokens.add(var5.substring(var6 + 1));
}
}
} else if("-".equals(var5)) {
this.tokens.add(var5);
} else if(var5.startsWith("-")) {
if(var5.length() != 2 && !var1.hasOption(var5)) {
this.burstToken(var5, var3);
} else {
this.processOptionToken(var5, var3);
}
} else {
this.processNonOptionToken(var5, var3);
}
}
return (String[])((String[])this.tokens.toArray(new String[this.tokens.size()]));
}
private void gobble(Iterator var1) {
if(this.eatTheRest) {
while(var1.hasNext()) {
this.tokens.add(var1.next());
}
}
}
private void processNonOptionToken(String var1, boolean var2) {
if(var2 && (this.currentOption == null || !this.currentOption.hasArg())) {
this.eatTheRest = true;
this.tokens.add("--");
}
this.tokens.add(var1);
}
private void processOptionToken(String var1, boolean var2) {
if(var2 && !this.options.hasOption(var1)) {
this.eatTheRest = true;
}
if(this.options.hasOption(var1)) {
this.currentOption = this.options.getOption(var1);
}
this.tokens.add(var1);
}
protected void burstToken(String var1, boolean var2) {
for(int var3 = 1; var3 < var1.length(); ++var3) {
String var4 = String.valueOf(var1.charAt(var3));
if(!this.options.hasOption(var4)) {
if(var2) {
this.processNonOptionToken(var1.substring(var3), true);
} else {
this.tokens.add(var1);
}
break;
}
this.tokens.add("-" + var4);
this.currentOption = this.options.getOption(var4);
if(this.currentOption.hasArg() && var1.length() != var3 + 1) {
this.tokens.add(var1.substring(var3 + 1));
break;
}
}
}
}