public override sealed ParserState Parse(IArgumentEnumerator argumentEnumerator, OptionMap map, object options) { IArgumentEnumerator group = new OneCharStringEnumerator(argumentEnumerator.Current.Substring(1)); while (group.MoveNext()) { var option = map[group.Current]; if (option == null) return ParserState.Failure; option.IsDefined = true; ArgumentParser.EnsureOptionArrayAttributeIsNotBoundToScalar(option); if (!option.IsBoolean) { if (argumentEnumerator.IsLast && group.IsLast) return ParserState.Failure; if (!group.IsLast) { if (!option.IsArray) return ArgumentParser.BooleanToParserState(option.SetValue(group.GetRemainingFromNext(), options)); else { ArgumentParser.EnsureOptionAttributeIsArrayCompatible(option); var items = ArgumentParser.GetNextInputValues(argumentEnumerator); items.Insert(0, group.GetRemainingFromNext()); return ArgumentParser.BooleanToParserState(option.SetValue(items, options), true); } } if (!argumentEnumerator.IsLast && !ArgumentParser.IsInputValue(argumentEnumerator.Next)) return ParserState.Failure; else { if (!option.IsArray) return ArgumentParser.BooleanToParserState(option.SetValue(argumentEnumerator.Next, options), true); else { ArgumentParser.EnsureOptionAttributeIsArrayCompatible(option); var items = ArgumentParser.GetNextInputValues(argumentEnumerator); return ArgumentParser.BooleanToParserState(option.SetValue(items, options)); } } } else { if (!group.IsLast && map[group.Next] == null) return ParserState.Failure; if (!option.SetValue(true, options)) return ParserState.Failure; } } return ParserState.Success; }
public sealed override ParserState Parse(IArgumentEnumerator argumentEnumerator, OptionMap map, object options) { var parts = argumentEnumerator.Current.Substring(2).Split(new char[] { '=' }, 2); var option = map[parts[0]]; if (option == null) return ParserState.Failure; option.IsDefined = true; ArgumentParser.EnsureOptionArrayAttributeIsNotBoundToScalar(option); if (!option.IsBoolean) { if (parts.Length == 1 && (argumentEnumerator.IsLast || !ArgumentParser.IsInputValue(argumentEnumerator.Next))) return ParserState.Failure; if (parts.Length == 2) { if (!option.IsArray) return ArgumentParser.BooleanToParserState(option.SetValue(parts[1], options)); else { ArgumentParser.EnsureOptionAttributeIsArrayCompatible(option); var items = ArgumentParser.GetNextInputValues(argumentEnumerator); items.Insert(0, parts[1]); return ArgumentParser.BooleanToParserState(option.SetValue(items, options)); } } else { if (!option.IsArray) return ArgumentParser.BooleanToParserState(option.SetValue(argumentEnumerator.Next, options), true); else { ArgumentParser.EnsureOptionAttributeIsArrayCompatible(option); var items = ArgumentParser.GetNextInputValues(argumentEnumerator); return ArgumentParser.BooleanToParserState(option.SetValue(items, options), true); } } } else { if (parts.Length == 2) return ParserState.Failure; return ArgumentParser.BooleanToParserState(option.SetValue(true, options)); } }
protected static IList<string> GetNextInputValues(IArgumentEnumerator ae) { IList<string> list = new List<string>(); while (ae.MoveNext()) { if (IsInputValue(ae.Current)) list.Add(ae.Current); else break; } if (!ae.MovePrevious()) throw new CommandLineParserException(); return list; }
protected static IList <string> GetNextInputValues(IArgumentEnumerator ae) { IList <string> list = new List <string>(); while (ae.MoveNext()) { if (IsInputValue(ae.Current)) { list.Add(ae.Current); } else { break; } } if (!ae.MovePrevious()) { throw new CommandLineParserException(); } return(list); }
/// <summary> /// Helper method for testing purpose. /// </summary>> internal static IList<string> InternalWrapperOfGetNextInputValues(IArgumentEnumerator ae) { return GetNextInputValues(ae); }
public override PresentParserState Parse(IArgumentEnumerator argumentEnumerator, OptionMap map, object options) { var optionGroup = new OneCharStringEnumerator(argumentEnumerator.Current.Substring(1)); while (optionGroup.MoveNext()) { var option = map[optionGroup.Current]; if (option == null) { return _ignoreUnkwnownArguments ? PresentParserState.MoveOnNextElement : PresentParserState.Failure; } option.IsDefined = true; ArgumentParser.EnsureOptionArrayAttributeIsNotBoundToScalar(option); if (!option.IsBoolean) { if (argumentEnumerator.IsLast && optionGroup.IsLast) { return PresentParserState.Failure; } bool valueSetting; if (!optionGroup.IsLast) { if (!option.IsArray) { valueSetting = option.SetValue(optionGroup.GetRemainingFromNext(), options); if (!valueSetting) { DefineOptionThatViolatesFormat(option); } return ArgumentParser.BooleanToParserState(valueSetting); } ArgumentParser.EnsureOptionAttributeIsArrayCompatible(option); var items = ArgumentParser.GetNextInputValues(argumentEnumerator); items.Insert(0, optionGroup.GetRemainingFromNext()); valueSetting = option.SetValue(items, options); if (!valueSetting) { DefineOptionThatViolatesFormat(option); } return ArgumentParser.BooleanToParserState(valueSetting, true); } if (!argumentEnumerator.IsLast && !ArgumentParser.IsInputValue(argumentEnumerator.Next)) { return PresentParserState.Failure; } if (!option.IsArray) { valueSetting = option.SetValue(argumentEnumerator.Next, options); if (!valueSetting) { DefineOptionThatViolatesFormat(option); } return ArgumentParser.BooleanToParserState(valueSetting, true); } ArgumentParser.EnsureOptionAttributeIsArrayCompatible(option); var moreItems = ArgumentParser.GetNextInputValues(argumentEnumerator); valueSetting = option.SetValue(moreItems, options); if (!valueSetting) { DefineOptionThatViolatesFormat(option); } return ArgumentParser.BooleanToParserState(valueSetting); } if (!optionGroup.IsLast && map[optionGroup.Next] == null) { return PresentParserState.Failure; } if (!argumentEnumerator.IsLast) { string value = argumentEnumerator.Next; bool result; if (bool.TryParse(value, out result)) { if (!option.SetValue(value, options)) { return PresentParserState.Failure; } argumentEnumerator.MoveNext(); } else if (!option.SetValue(true, options)) { return PresentParserState.Failure; } } else { if (!option.SetValue(true, options)) { return PresentParserState.Failure; } } } return PresentParserState.Success; }
public override Internal.ParserState Parse(IArgumentEnumerator argumentEnumerator, OptionMap map, object options) { var parts = argumentEnumerator.Current.Substring(2).Split(new[] { '=' }, 2); var option = map[parts[0]]; bool valueSetting; if (option == null) { return _ignoreUnkwnownArguments ? Internal.ParserState.MoveOnNextElement : Internal.ParserState.Failure; } option.IsDefined = true; ArgumentParser.EnsureOptionArrayAttributeIsNotBoundToScalar(option); if (!option.IsBoolean) { if (parts.Length == 1 && (argumentEnumerator.IsLast || !ArgumentParser.IsInputValue(argumentEnumerator.Next))) { return Internal.ParserState.Failure; } if (parts.Length == 2) { if (!option.IsArray) { valueSetting = option.SetValue(parts[1], options); if (!valueSetting) { DefineOptionThatViolatesFormat(option); } return ArgumentParser.BooleanToParserState(valueSetting); } ArgumentParser.EnsureOptionAttributeIsArrayCompatible(option); var items = ArgumentParser.GetNextInputValues(argumentEnumerator); items.Insert(0, parts[1]); valueSetting = option.SetValue(items, options); if (!valueSetting) { DefineOptionThatViolatesFormat(option); } return ArgumentParser.BooleanToParserState(valueSetting); } else { if (!option.IsArray) { valueSetting = option.SetValue(argumentEnumerator.Next, options); if (!valueSetting) { DefineOptionThatViolatesFormat(option); } return ArgumentParser.BooleanToParserState(valueSetting, true); } ArgumentParser.EnsureOptionAttributeIsArrayCompatible(option); var items = ArgumentParser.GetNextInputValues(argumentEnumerator); valueSetting = option.SetValue(items, options); if (!valueSetting) { DefineOptionThatViolatesFormat(option); } return ArgumentParser.BooleanToParserState(valueSetting); } } if (parts.Length == 2) { return Internal.ParserState.Failure; } valueSetting = option.SetValue(true, options); if (!valueSetting) { DefineOptionThatViolatesFormat(option); } return ArgumentParser.BooleanToParserState(valueSetting); }
public sealed override ParserState Parse(IArgumentEnumerator argumentEnumerator, OptionMap map, object options) { IArgumentEnumerator group = new OneCharStringEnumerator(argumentEnumerator.Current.Substring(1)); while (group.MoveNext()) { var option = map[group.Current]; if (option == null) { return(ParserState.Failure); } option.IsDefined = true; ArgumentParser.EnsureOptionArrayAttributeIsNotBoundToScalar(option); if (!option.IsBoolean) { if (argumentEnumerator.IsLast && group.IsLast) { return(ParserState.Failure); } if (!group.IsLast) { if (!option.IsArray) { return(ArgumentParser.BooleanToParserState(option.SetValue(group.GetRemainingFromNext(), options))); } else { ArgumentParser.EnsureOptionAttributeIsArrayCompatible(option); var items = ArgumentParser.GetNextInputValues(argumentEnumerator); items.Insert(0, group.GetRemainingFromNext()); return(ArgumentParser.BooleanToParserState(option.SetValue(items, options), true)); } } if (!argumentEnumerator.IsLast && !ArgumentParser.IsInputValue(argumentEnumerator.Next)) { return(ParserState.Failure); } else { if (!option.IsArray) { return(ArgumentParser.BooleanToParserState(option.SetValue(argumentEnumerator.Next, options), true)); } else { ArgumentParser.EnsureOptionAttributeIsArrayCompatible(option); var items = ArgumentParser.GetNextInputValues(argumentEnumerator); return(ArgumentParser.BooleanToParserState(option.SetValue(items, options))); } } } else { if (!group.IsLast && map[group.Next] == null) { return(ParserState.Failure); } if (!option.SetValue(true, options)) { return(ParserState.Failure); } } } return(ParserState.Success); }
public abstract PresentParserState Parse(IArgumentEnumerator argumentEnumerator, OptionMap map, object options);
/// <summary> /// Helper method for testing purpose. /// </summary> /// <param name="ae">An argument enumerator instance.</param> /// <returns>The next input value.</returns> internal static IList <string> InternalWrapperOfGetNextInputValues(IArgumentEnumerator ae) { return(GetNextInputValues(ae)); }
public override PresentParserState Parse(IArgumentEnumerator argumentEnumerator, OptionMap map, object options) { var optionGroup = new OneCharStringEnumerator(argumentEnumerator.Current.Substring(1)); while (optionGroup.MoveNext()) { var option = map[optionGroup.Current]; if (option == null) { return(_ignoreUnkwnownArguments ? PresentParserState.MoveOnNextElement : PresentParserState.Failure); } option.IsDefined = true; ArgumentParser.EnsureOptionArrayAttributeIsNotBoundToScalar(option); if (!option.IsBoolean) { if (argumentEnumerator.IsLast && optionGroup.IsLast) { return(PresentParserState.Failure); } bool valueSetting; if (!optionGroup.IsLast) { if (!option.IsArray) { valueSetting = option.SetValue(optionGroup.GetRemainingFromNext(), options); if (!valueSetting) { DefineOptionThatViolatesFormat(option); } return(ArgumentParser.BooleanToParserState(valueSetting)); } ArgumentParser.EnsureOptionAttributeIsArrayCompatible(option); var items = ArgumentParser.GetNextInputValues(argumentEnumerator); items.Insert(0, optionGroup.GetRemainingFromNext()); valueSetting = option.SetValue(items, options); if (!valueSetting) { DefineOptionThatViolatesFormat(option); } return(ArgumentParser.BooleanToParserState(valueSetting, true)); } if (!argumentEnumerator.IsLast && !ArgumentParser.IsInputValue(argumentEnumerator.Next)) { return(PresentParserState.Failure); } if (!option.IsArray) { valueSetting = option.SetValue(argumentEnumerator.Next, options); if (!valueSetting) { DefineOptionThatViolatesFormat(option); } return(ArgumentParser.BooleanToParserState(valueSetting, true)); } ArgumentParser.EnsureOptionAttributeIsArrayCompatible(option); var moreItems = ArgumentParser.GetNextInputValues(argumentEnumerator); valueSetting = option.SetValue(moreItems, options); if (!valueSetting) { DefineOptionThatViolatesFormat(option); } return(ArgumentParser.BooleanToParserState(valueSetting)); } if (!optionGroup.IsLast && map[optionGroup.Next] == null) { return(PresentParserState.Failure); } if (!option.SetValue(true, options)) { return(PresentParserState.Failure); } } return(PresentParserState.Success); }
public override ParserState Parse(IArgumentEnumerator argumentEnumerator, OptionMap map, object options) { using (IArgumentEnumerator group = new OneCharStringEnumerator(argumentEnumerator.Current.Substring(1))) { while (group.MoveNext()) { var option = map[group.Current]; if (option == null) return _ignoreUnkwnownArguments ? ParserState.MoveOnNextElement : ParserState.Failure; option.IsDefined = true; EnsureOptionArrayAttributeIsNotBoundToScalar(option); if (!option.IsBoolean) { if (argumentEnumerator.IsLast && group.IsLast) return ParserState.Failure; bool valueSetting; IList<string> items; if (!group.IsLast) { if (!option.IsArray) { valueSetting = option.SetValue(group.GetRemainingFromNext(), options); if (!valueSetting) DefineOptionThatViolatesFormat(option); return BooleanToParserState(valueSetting); } EnsureOptionAttributeIsArrayCompatible(option); items = GetNextInputValues(argumentEnumerator); items.Insert(0, @group.GetRemainingFromNext()); valueSetting = option.SetValue(items, options); if (!valueSetting) DefineOptionThatViolatesFormat(option); return BooleanToParserState(valueSetting, true); } if (!argumentEnumerator.IsLast && !IsInputValue(argumentEnumerator.Next)) return ParserState.Failure; if (!option.IsArray) { valueSetting = option.SetValue(argumentEnumerator.Next, options); if (!valueSetting) DefineOptionThatViolatesFormat(option); return BooleanToParserState(valueSetting, true); } EnsureOptionAttributeIsArrayCompatible(option); items = GetNextInputValues(argumentEnumerator); valueSetting = option.SetValue(items, options); if (!valueSetting) DefineOptionThatViolatesFormat(option); return BooleanToParserState(valueSetting); } if ([email protected] && map[@group.Next] == null) return ParserState.Failure; if (!option.SetValue(true, options)) return ParserState.Failure; } } return ParserState.Success; }
public static IList<string> PublicWrapperOfGetNextInputValues(IArgumentEnumerator ae) { return GetNextInputValues(ae); }
public abstract Internal.ParserState Parse(IArgumentEnumerator argumentEnumerator, OptionMap map, object options);
public sealed override ParserState Parse(IArgumentEnumerator argumentEnumerator, OptionMap map, object options) { var parts = argumentEnumerator.Current.Substring(2).Split(new char[] { '=' }, 2); var option = map[parts[0]]; if (option == null) { return(ParserState.Failure); } option.IsDefined = true; ArgumentParser.EnsureOptionArrayAttributeIsNotBoundToScalar(option); if (!option.IsBoolean) { if (parts.Length == 1 && (argumentEnumerator.IsLast || !ArgumentParser.IsInputValue(argumentEnumerator.Next))) { return(ParserState.Failure); } if (parts.Length == 2) { if (!option.IsArray) { return(ArgumentParser.BooleanToParserState(option.SetValue(parts[1], options))); } else { ArgumentParser.EnsureOptionAttributeIsArrayCompatible(option); var items = ArgumentParser.GetNextInputValues(argumentEnumerator); items.Insert(0, parts[1]); return(ArgumentParser.BooleanToParserState(option.SetValue(items, options))); } } else { if (!option.IsArray) { return(ArgumentParser.BooleanToParserState(option.SetValue(argumentEnumerator.Next, options), true)); } else { ArgumentParser.EnsureOptionAttributeIsArrayCompatible(option); var items = ArgumentParser.GetNextInputValues(argumentEnumerator); return(ArgumentParser.BooleanToParserState(option.SetValue(items, options), true)); } } } else { if (parts.Length == 2) { return(ParserState.Failure); } return(ArgumentParser.BooleanToParserState(option.SetValue(true, options))); } }
public override sealed ParserState Parse(IArgumentEnumerator argumentEnumerator, OptionMap map, object options) { var parts = argumentEnumerator.Current.Substring(switchLength).Split(new char[] { '=' }, 2); var option = map[parts[0]]; var valueSetting = false; if (option == null) return ParserState.Failure; option.IsDefined = true; EnsureOptionArrayAttributeIsNotBoundToScalar(option); if (!option.IsBoolean) { if (parts.Length == 1 && (argumentEnumerator.IsLast || !IsInputValue(argumentEnumerator.Next))) return ParserState.Failure; if (parts.Length == 2) { if (!option.IsArray) { valueSetting = option.SetValue(parts[1], options); if (!valueSetting) this.DefineOptionThatViolatesFormat(option); return BooleanToParserState(valueSetting); } else { EnsureOptionAttributeIsArrayCompatible(option); var items = GetNextInputValues(argumentEnumerator); items.Insert(0, parts[1]); valueSetting = option.SetValue(items, options); if (!valueSetting) this.DefineOptionThatViolatesFormat(option); return BooleanToParserState(valueSetting); } } else { if (!option.IsArray) { valueSetting = option.SetValue(argumentEnumerator.Next, options); if (!valueSetting) this.DefineOptionThatViolatesFormat(option); return ArgumentParser.BooleanToParserState(valueSetting, true); } else { ArgumentParser.EnsureOptionAttributeIsArrayCompatible(option); var items = ArgumentParser.GetNextInputValues(argumentEnumerator); valueSetting = option.SetValue(items, options); if (!valueSetting) this.DefineOptionThatViolatesFormat(option); return ArgumentParser.BooleanToParserState(valueSetting, true); } } } else { if (parts.Length == 2) return ParserState.Failure; valueSetting = option.SetValue(true, options); if (!valueSetting) this.DefineOptionThatViolatesFormat(option); return ArgumentParser.BooleanToParserState(valueSetting); } }
public static IList <string> PublicWrapperOfGetNextInputValues(IArgumentEnumerator ae) { return(GetNextInputValues(ae)); }
public override PresentParserState Parse(IArgumentEnumerator argumentEnumerator, OptionMap map, object options) { var parts = argumentEnumerator.Current.Substring(2).Split(new[] { '=' }, 2); var option = map[parts[0]]; if (option == null) { return(_ignoreUnkwnownArguments ? PresentParserState.MoveOnNextElement : PresentParserState.Failure); } option.IsDefined = true; ArgumentParser.EnsureOptionArrayAttributeIsNotBoundToScalar(option); bool valueSetting; if (!option.IsBoolean) { if (parts.Length == 1 && (argumentEnumerator.IsLast || !ArgumentParser.IsInputValue(argumentEnumerator.Next))) { return(PresentParserState.Failure); } if (parts.Length == 2) { if (!option.IsArray) { valueSetting = option.SetValue(parts[1], options); if (!valueSetting) { DefineOptionThatViolatesFormat(option); } return(ArgumentParser.BooleanToParserState(valueSetting)); } ArgumentParser.EnsureOptionAttributeIsArrayCompatible(option); var items = ArgumentParser.GetNextInputValues(argumentEnumerator); items.Insert(0, parts[1]); valueSetting = option.SetValue(items, options); if (!valueSetting) { DefineOptionThatViolatesFormat(option); } return(ArgumentParser.BooleanToParserState(valueSetting)); } else { if (!option.IsArray) { valueSetting = option.SetValue(argumentEnumerator.Next, options); if (!valueSetting) { DefineOptionThatViolatesFormat(option); } return(ArgumentParser.BooleanToParserState(valueSetting, true)); } ArgumentParser.EnsureOptionAttributeIsArrayCompatible(option); var items = ArgumentParser.GetNextInputValues(argumentEnumerator); valueSetting = option.SetValue(items, options); if (!valueSetting) { DefineOptionThatViolatesFormat(option); } return(ArgumentParser.BooleanToParserState(valueSetting)); } } if (parts.Length == 2) { return(PresentParserState.Failure); } valueSetting = option.SetValue(true, options); if (!valueSetting) { DefineOptionThatViolatesFormat(option); } return(ArgumentParser.BooleanToParserState(valueSetting)); }
public override ParserState Parse(IArgumentEnumerator argumentEnumerator, OptionMap map, object options) { innerParser = new OptionGroupParser(switchLength); var parts = argumentEnumerator.Current.Substring(switchLength).Split(new char[] { '=' }, 2); if(parts[0].Length > 1) { var option = map[parts[0]]; if (option != null) innerParser = new LongOptionParser(switchLength); } return innerParser.Parse(argumentEnumerator, map, options); }