package de.axone.funky.shell;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import de.axone.funky.ArgumentParser;
import de.axone.funky.FunctionDescription;
public class ArgumentParser_Shell implements ArgumentParser<Caller_Shell> {
public Map<String,Object> parse( FunctionDescription function, final List<String> args ){
// Make a copy to we don't change arguments
//LinkedList<String> myArgs = new LinkedList<>( args );
//LinkedList<Argument<?,?>> myArguments = new LinkedList<>( function.arguments() );
TreeMap<String,Object> result = new TreeMap<>();
/*
for( Argument<?,?> arg : function.arguments() ){
String found = find( arg, myArgs );
if( ! arg.optional() && found == null )
throw new IllegalArgumentException( "Missing: " + arg.name() );
Object value = arg.type().parse( found );
result.put( arg.name(), value );
}
int pos = 0;
for( String arg : args ){
Argument<?,?> a = find( pos, function.arguments(), arg );
}
*/
return result;
}
/*
private Argument<?,?> find( int i, List<Argument<?,?>> args, String arg ){
NameValue nv = FunctionDescriptionBuilder_Shell.parseArg( arg );
int pos = 0;
for( Argument<?,?> a : args ){
}
}
*/
/*
private String find( Argument<?,?> arg, List<String> args ){
for( String a : args ){
NameValue nv = FunctionDescriptionBuilder_Shell.parseArg( a );
}
return null;
}
*/
@Override
public Map<String,Object> parse( FunctionDescription function, String line ){
return parse( function, Arrays.asList( line.split( "\\s+" ) ) );
}
}