public static ParserResult<object> Choose( IEnumerable<Type> types, IEnumerable<string> arguments, StringComparer nameComparer, CultureInfo parsingCulture) { var tokenizer = new TokenizerGetOpt(); return Choose( (args, optionSpecs) => { var tokens = tokenizer.Tokenize(args, name => NameLookup.Contains(name, optionSpecs, nameComparer)); var explodedTokens = tokenizer.ExplodeOptionList(tokens, name => NameLookup.HavingSeparator(name, optionSpecs, nameComparer)); return explodedTokens; }, types, arguments, nameComparer, parsingCulture); }
public void Explode_scalar_with_separator_in_odd_args_input_returns_sequence() { // Fixture setup var expectedTokens = new[] { Token.Name("i"), Token.Value("10"), Token.Name("string-seq"), Token.Value("aaa"), Token.Value("bb"), Token.Value("cccc"), Token.Name("switch") }; var specs = new[] { new OptionSpecification(string.Empty, "string-seq", false, string.Empty, Maybe.Nothing<int>(), Maybe.Nothing<int>(), ',', null, string.Empty, string.Empty, new List<string>(), typeof(IEnumerable<string>), TargetType.Sequence)}; var tokenizer = new TokenizerGetOpt(); // Exercize system var result = tokenizer.ExplodeOptionList( Result.Succeed( Enumerable.Empty<Token>().Concat(new[] { Token.Name("i"), Token.Value("10"), Token.Name("string-seq"), Token.Value("aaa,bb,cccc"), Token.Name("switch") }), Enumerable.Empty<Error>()), optionName => NameLookup.HavingSeparator(optionName, specs, StringComparer.InvariantCulture)); // Verify outcome ((Ok<IEnumerable<Token>, Error>)result).Value.Success.ShouldBeEquivalentTo(expectedTokens); // Teardown }
public void Double_dash_force_subsequent_arguments_as_values() { // Fixture setup var expectedResult = new FakeOptionsWithValues { StringValue = "str1", LongValue = 10L, StringSequence = new[] { "-a", "--bee", "-c" }, IntValue = 20 }; var arguments = new[] { "--stringvalue", "str1", "--", "10", "-a", "--bee", "-c", "20" }; var tokenizer = new TokenizerGetOpt(); // Exercize system var result = InstanceBuilder.Build( Maybe.Just<Func<FakeOptionsWithValues>>(() => new FakeOptionsWithValues()), (a, optionSpecs) => tokenizer.Preprocess(a, args => tokenizer.Tokenize(args, name => NameLookup.Contains(name, optionSpecs, StringComparer.Ordinal))), arguments, StringComparer.Ordinal, CultureInfo.InvariantCulture); // Verify outcome expectedResult.ShouldBeEquivalentTo(((Parsed<FakeOptionsWithValues>)result).Value); // Teardown }