1 61 package org.apache.commons.cli; 62 63 import java.util.Arrays ; 64 import java.util.ArrayList ; 65 import java.util.Collection ; 66 import java.util.Iterator ; 67 68 76 public class GnuParser extends Parser { 77 78 79 private ArrayList tokens = new ArrayList (); 80 81 85 private void init() { 86 tokens.clear(); 87 } 88 89 102 protected String [] flatten( Options options, 103 String [] arguments, 104 boolean stopAtNonOption ) 105 { 106 init(); 107 boolean eatTheRest = false; 108 Option currentOption = null; 109 110 for( int i = 0; i < arguments.length; i++ ) { 111 if( "--".equals( arguments[i] ) ) { 112 eatTheRest = true; 113 tokens.add( "--" ); 114 } 115 else if ( "-".equals( arguments[i] ) ) { 116 tokens.add( "-" ); 117 } 118 else if( arguments[i].startsWith( "-" ) ) { 119 Option option = options.getOption( arguments[i] ); 120 121 if( option == null ) { 123 Option specialOption = options.getOption( arguments[i].substring(0,2) ); 125 if( specialOption != null ) { 126 tokens.add( arguments[i].substring(0,2) ); 127 tokens.add( arguments[i].substring(2) ); 128 } 129 else if( stopAtNonOption ) { 130 eatTheRest = true; 131 tokens.add( arguments[i] ); 132 } 133 else { 134 tokens.add( arguments[i] ); 135 } 136 } 137 else { 138 currentOption = option; 139 Option specialOption = options.getOption( arguments[i].substring(0,2) ); 141 if( specialOption != null && option == null ) { 142 tokens.add( arguments[i].substring(0,2) ); 143 tokens.add( arguments[i].substring(2) ); 144 } 145 else if( currentOption != null && currentOption.hasArg() ) { 146 if( currentOption.hasArg() ) { 147 tokens.add( arguments[i] ); 148 currentOption= null; 149 } 150 else if ( currentOption.hasArgs() ) { 151 tokens.add( arguments[i] ); 152 } 153 else if ( stopAtNonOption ) { 154 eatTheRest = true; 155 tokens.add( "--" ); 156 tokens.add( arguments[i] ); 157 } 158 else { 159 tokens.add( arguments[i] ); 160 } 161 } 162 else if (currentOption != null ) { 163 tokens.add( arguments[i] ); 164 } 165 else if ( stopAtNonOption ) { 166 eatTheRest = true; 167 tokens.add( "--" ); 168 tokens.add( arguments[i] ); 169 } 170 else { 171 tokens.add( arguments[i] ); 172 } 173 } 174 } 175 else { 176 tokens.add( arguments[i] ); 177 } 178 179 if( eatTheRest ) { 180 for( i++; i < arguments.length; i++ ) { 181 tokens.add( arguments[i] ); 182 } 183 } 184 } 185 return (String [])tokens.toArray( new String [] {} ); 186 } 187 } | Popular Tags |