Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
io.airlift.command.ParseState Maven / Gradle / Ivy
Go to download
Airline is a Java annotation-based framework for parsing Git like command line structures.
package io.airlift.command;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableListMultimap;
import com.google.common.collect.ListMultimap;
import io.airlift.command.model.CommandGroupMetadata;
import io.airlift.command.model.CommandMetadata;
import io.airlift.command.model.OptionMetadata;
import java.util.List;
public class ParseState
{
private final List locationStack;
private final CommandGroupMetadata group;
private final CommandMetadata command;
private final ListMultimap parsedOptions;
private final List parsedArguments;
private final OptionMetadata currentOption;
private final List unparsedInput;
ParseState(CommandGroupMetadata group,
CommandMetadata command,
ListMultimap parsedOptions,
List locationStack,
List parsedArguments,
OptionMetadata currentOption,
List unparsedInput)
{
this.group = group;
this.command = command;
this.parsedOptions = parsedOptions;
this.locationStack = locationStack;
this.parsedArguments = parsedArguments;
this.currentOption = currentOption;
this.unparsedInput = unparsedInput;
}
public static ParseState newInstance()
{
return new ParseState(null, null, ArrayListMultimap.create(), ImmutableList.of(), ImmutableList.of(), null, ImmutableList.of());
}
public ParseState pushContext(Context location)
{
ImmutableList locationStack = ImmutableList.builder()
.addAll(this.locationStack)
.add(location)
.build();
return new ParseState(group, command, parsedOptions, locationStack, parsedArguments, currentOption, unparsedInput);
}
public ParseState popContext()
{
ImmutableList locationStack = ImmutableList.copyOf(this.locationStack.subList(0, this.locationStack.size() - 1));
return new ParseState(group, command, parsedOptions, locationStack, parsedArguments, currentOption, unparsedInput);
}
public ParseState withOptionValue(OptionMetadata option, Object value)
{
ImmutableListMultimap newOptions = ImmutableListMultimap.builder()
.putAll(parsedOptions)
.put(option, value)
.build();
return new ParseState(group, command, newOptions, locationStack, parsedArguments, currentOption, unparsedInput);
}
public ParseState withGroup(CommandGroupMetadata group)
{
return new ParseState(group, command, parsedOptions, locationStack, parsedArguments, currentOption, unparsedInput);
}
public ParseState withCommand(CommandMetadata command)
{
return new ParseState(group, command, parsedOptions, locationStack, parsedArguments, currentOption, unparsedInput);
}
public ParseState withOption(OptionMetadata option)
{
return new ParseState(group, command, parsedOptions, locationStack, parsedArguments, option, unparsedInput);
}
public ParseState withArgument(Object argument)
{
ImmutableList newArguments = ImmutableList.builder()
.addAll(parsedArguments)
.add(argument)
.build();
return new ParseState(group, command, parsedOptions, locationStack, newArguments, currentOption, unparsedInput);
}
public ParseState withUnparsedInput(String input)
{
ImmutableList newUnparsedInput = ImmutableList.builder()
.addAll(unparsedInput)
.add(input)
.build();
return new ParseState(group, command, parsedOptions, locationStack, parsedArguments, currentOption, newUnparsedInput);
}
@Override
public String toString()
{
return "ParseState{" +
"locationStack=" + locationStack +
", group=" + group +
", command=" + command +
", parsedOptions=" + parsedOptions +
", parsedArguments=" + parsedArguments +
", currentOption=" + currentOption +
", unparsedInput=" + unparsedInput +
'}';
}
public Context getLocation()
{
return locationStack.get(locationStack.size() - 1);
}
public CommandGroupMetadata getGroup()
{
return group;
}
public CommandMetadata getCommand()
{
return command;
}
public OptionMetadata getCurrentOption()
{
return currentOption;
}
public ListMultimap getParsedOptions()
{
return parsedOptions;
}
public List getParsedArguments()
{
return parsedArguments;
}
public List getUnparsedInput()
{
return unparsedInput;
}
}