public void CharIteration() { IStringEnumerator e = new CharEnumeratorEx("abcd"); int i = 0; while (e.MoveNext()) { switch (i) { case 0: Assert.AreEqual("a", e.Current); Assert.AreEqual("b", e.Next); Assert.AreEqual("bcd", e.GetRemainingFromNext()); Assert.IsFalse(e.IsLast); break; case 1: Assert.AreEqual("b", e.Current); Assert.AreEqual("c", e.Next); Assert.AreEqual("cd", e.GetRemainingFromNext()); Assert.IsFalse(e.IsLast); break; case 2: Assert.AreEqual("c", e.Current); Assert.AreEqual("d", e.Next); Assert.AreEqual("d", e.GetRemainingFromNext()); Assert.IsFalse(e.IsLast); break; case 3: Assert.AreEqual("d", e.Current); Assert.IsTrue(e.IsLast); break; } i++; } }
public sealed override ParserState Parse(IStringEnumerator argumentEnumerator, IOptionMap map, object options) { IStringEnumerator group = new CharEnumeratorEx(argumentEnumerator.Current.Substring(1)); while (group.MoveNext()) { OptionInfo option = map[group.Current]; if (option == null) { return(ParserState.Failure); } option.IsDefined = true; if (!option.IsBoolean) { if (argumentEnumerator.IsLast && group.IsLast) { return(ParserState.Failure); } if (!group.IsLast) { if (option.SetValue(group.GetRemainingFromNext(), options)) { return(ParserState.Success); } else { return(ParserState.Failure); } } if (!argumentEnumerator.IsLast && !ArgumentParser.IsInputValue(argumentEnumerator.Next)) { return(ParserState.Failure); } else { if (option.SetValue(argumentEnumerator.Next, options)) { return(ParserState.Success | ParserState.MoveOnNextElement); } else { return(ParserState.Failure); } } } else { if (!group.IsLast && map[group.Next] == null) { return(ParserState.Failure); } if (!option.SetValue(true, options)) { return(ParserState.Failure); } } } return(ParserState.Success); }
public override sealed ParserState Parse(IStringEnumerator argumentEnumerator, IOptionMap map, object options) { IStringEnumerator group = new CharEnumeratorEx(argumentEnumerator.Current.Substring(1)); while (group.MoveNext()) { OptionInfo option = map[group.Current]; if (option == null) { return ParserState.Failure; } option.IsDefined = true; if (!option.IsBoolean) { if (argumentEnumerator.IsLast && group.IsLast) { return ParserState.Failure; } if (!group.IsLast) { if (option.SetValue(group.GetRemainingFromNext(), options)) { return ParserState.Success; } else { return ParserState.Failure; } } if (!argumentEnumerator.IsLast && !ArgumentParser.IsInputValue(argumentEnumerator.Next)) { return ParserState.Failure; } else { if (option.SetValue(argumentEnumerator.Next, options)) { return ParserState.Success | ParserState.MoveOnNextElement; } else { return ParserState.Failure; } } } else { if (!group.IsLast && map[group.Next] == null) { return ParserState.Failure; } if (!option.SetValue(true, options)) { return ParserState.Failure; } } } return ParserState.Success; }