Example #1
0
        //[Fact]
        //public void RetrieveNotExistentShortOption()
        //{
        //    var shortOi = _optionMap["y"];
        //    shortOi.Should().BeNull();
        //}
        //[Fact]
        //public void RetrieveNotExistentLongOption()
        //{
        //    var longOi = _optionMap["nomorebugshere"];
        //    longOi.Should().BeNull();
        //}
        private static OptionMap CreateMap(ref OptionMap map, IDictionary<string, OptionInfo> optionCache)
        {
            if (map == null)
            {
                map = new OptionMap (3, new CommandLineParserSettings (true));
            }

            var attribute1 = new OptionAttribute('p', "pretend");
            var attribute2 = new OptionAttribute("newuse");
            var attribute3 = new OptionAttribute('D', null);

            var option1 = attribute1.CreateOptionInfo();
            var option2 = attribute2.CreateOptionInfo();
            var option3 = attribute3.CreateOptionInfo();

            map[attribute1.UniqueName] = option1;
            map[attribute2.UniqueName] = option2;
            map[attribute3.UniqueName] = option3;

            if (optionCache != null)
            {
                optionCache[attribute1.UniqueName] = option1;
                optionCache[attribute1.UniqueName] = option2;
                optionCache[attribute2.UniqueName]= option3;
            }

            return map;
        }
Example #2
0
        //[Fact]
        //public void RetrieveNotExistentShortOption()
        //{
        //    var shortOi = _optionMap["y"];
        //    shortOi.Should().BeNull();
        //}

        //[Fact]
        //public void RetrieveNotExistentLongOption()
        //{
        //    var longOi = _optionMap["nomorebugshere"];
        //    longOi.Should().BeNull();
        //}

        private static OptionMap CreateMap(ref OptionMap map, IDictionary <string, OptionInfo> optionCache)
        {
            if (map == null)
            {
                map = new OptionMap(3, new ParserSettings(true));
            }

            var attribute1 = new OptionAttribute('p', "pretend");
            var attribute2 = new OptionAttribute("newuse");
            var attribute3 = new OptionAttribute('D', null);

            var option1 = attribute1.CreateOptionInfo();
            var option2 = attribute2.CreateOptionInfo();
            var option3 = attribute3.CreateOptionInfo();

            map[attribute1.UniqueName] = option1;
            map[attribute2.UniqueName] = option2;
            map[attribute3.UniqueName] = option3;

            if (optionCache != null)
            {
                optionCache[attribute1.UniqueName] = option1;
                optionCache[attribute1.UniqueName] = option2;
                optionCache[attribute2.UniqueName] = option3;
            }

            return(map);
        }
Example #3
0
        private bool TryParseHelpVerb(string[] args, object options, Pair <MethodInfo, HelpVerbOptionAttribute> helpInfo,
                                      OptionMap optionMap)
        {
            TextWriter helpWriter = _settings.HelpWriter;

            if (helpInfo != null && helpWriter != null)
            {
                if (string.Compare(args[0], helpInfo.Right.LongName, GetStringComparison(_settings)) == 0)
                {
                    // User explicitly requested help
                    string verb = args.FirstOrDefault();
                    if (verb != null)
                    {
                        OptionInfo verbOption = optionMap[verb];
                        if (verbOption != null)
                        {
                            if (verbOption.GetValue(options) is null)
                            {
                                // We need to create an instance also to render help
                                verbOption.CreateInstance(options);
                            }
                        }
                    }

                    DisplayHelpVerbText(options, helpInfo, verb);
                    return(true);
                }
            }

            return(false);
        }
        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;
        }
Example #5
0
        public void CreateInstance()
        {
            _omBuilder = new OptionMapBuilder(3);
            _omBuilder.AppendOption("p", "pretend");
            _omBuilder.AppendOption(null, "newuse");
            _omBuilder.AppendOption("D", null);

            _optionMap = _omBuilder.OptionMap;
        }
Example #6
0
        public void CreateInstance()
        {
            _omBuilder = new OptionMapBuilder(3);
            _omBuilder.AppendOption('p', "pretend");
            _omBuilder.AppendOption("newuse");
            _omBuilder.AppendOption('D', null);

            _optionMap = _omBuilder.OptionMap;
        }
Example #7
0
        private bool DoParseArgumentsVerbs(string[] args, object options, ref object verbInstance)
        {
            IList <Pair <PropertyInfo, VerbOptionAttribute> > verbs =
                ReflectionHelper.RetrievePropertyList <VerbOptionAttribute>(options);
            Pair <MethodInfo, HelpVerbOptionAttribute> helpInfo =
                ReflectionHelper.RetrieveMethod <HelpVerbOptionAttribute>(options);

            if (args.Length == 0)
            {
                if (helpInfo != null && _settings.HelpWriter != null)
                {
                    DisplayHelpVerbText(options, helpInfo, null);
                }

                return(false);
            }

            OptionMap optionMap = OptionMap.Create(options, verbs, _settings);

            if (TryParseHelpVerb(args, options, helpInfo, optionMap))
            {
                return(false);
            }

            OptionInfo verbOption = optionMap[args.First()];

            // User invoked a bad verb name
            if (verbOption is null)
            {
                if (helpInfo != null)
                {
                    DisplayHelpVerbText(options, helpInfo, null);
                }

                return(false);
            }

            verbInstance = verbOption.GetValue(options);
            if (verbInstance is null)
            {
                // Developer has not provided a default value and did not assign an instance
                verbInstance = verbOption.CreateInstance(options);
            }

            bool verbResult = DoParseArgumentsCore(args.Skip(1).ToArray(), verbInstance);

            if (!verbResult && helpInfo != null)
            {
                // Particular verb parsing failed, we try to print its help
                DisplayHelpVerbText(options, helpInfo, args.First());
            }

            return(verbResult);
        }
        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));
            }
        }
Example #9
0
        private bool DoParseArgumentsCore(string[] args, object options)
        {
            var hadError  = false;
            var optionMap = OptionMap.Create(options, _settings);

            optionMap.SetDefaults();
            var valueMapper = new ValueMapper(options, _settings.ParsingCulture);

            var arguments = new StringArrayEnumerator(args);

            while (arguments.MoveNext())
            {
                var argument = arguments.Current;
                if (string.IsNullOrEmpty(argument))
                {
                    continue;
                }

                var parser = ArgumentParser.Create(argument, _settings.IgnoreUnknownArguments);
                if (parser != null)
                {
                    var result = parser.Parse(arguments, optionMap, options);
                    if ((result & PresentParserState.Failure) == PresentParserState.Failure)
                    {
                        SetParserStateIfNeeded(options, parser.PostParsingState);
                        hadError = true;
                        continue;
                    }

                    if ((result & PresentParserState.MoveOnNextElement) == PresentParserState.MoveOnNextElement)
                    {
                        arguments.MoveNext();
                    }
                }
                else if (valueMapper.CanReceiveValues)
                {
                    if (!valueMapper.MapValueItem(argument))
                    {
                        hadError = true;
                    }
                }
            }

            hadError |= !optionMap.EnforceRules();

            return(!hadError);
        }
Example #10
0
            public static OptionMap CreateMap(Type type)
            {
                FieldInfo[] fields = type.GetFields();
                OptionMap   map    = new OptionMap(fields.Length);

                foreach (FieldInfo field in fields)
                {
                    if (!field.IsStatic && !field.IsInitOnly && !field.IsLiteral)
                    {
                        CmdLineOptionAttribute attribute = CmdLineOptionAttribute.FromField(field);

                        if (attribute != null)
                        {
                            map[attribute.UniqueName] = new OptionInfo(attribute, field);
                        }
                    }
                }

                return(map);
            }
Example #11
0
        private bool TryParseHelpVerb(string[] args, object options, Pair<MethodInfo, HelpVerbOptionAttribute> helpInfo, OptionMap optionMap)
        {
            var helpWriter = _settings.HelpWriter;
            if (helpInfo != null && helpWriter != null)
            {
                if (string.Compare(args[0], helpInfo.Right.LongName, GetStringComparison(_settings)) == 0)
                {
                    // User explicitly requested help
                    var verb = args.ElementAtOrDefault(1);
                    if (verb != null)
                    {
                        var verbOption = optionMap[verb];
                        if (verbOption != null)
                        {
                            if (verbOption.GetValue(options) == null)
                            {
                                // We need to create an instance also to render help
                                verbOption.CreateInstance(options);
                            }
                        }
                    }

                    DisplayHelpVerbText(options, helpInfo, verb);
                    return true;
                }
            }

            return false;
        }
Example #12
0
 public void ShutdownOptionMap()
 {
     optionMap = null;
 }
Example #13
0
        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;
        }
Example #14
0
        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 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);
        }
Example #16
0
        public static OptionMap Create(object target, IParserSettings settings)
        {
            var list = ReflectionUtil.RetrievePropertyList<BaseOptionAttribute>(target);
            if (list == null)
            {
                return null;
            }

            var map = new OptionMap(list.Count, settings);

            foreach (var pair in list)
            {
                if (pair.Left != null && pair.Right != null)
                {
                    string uniqueName;
                    if (pair.Right.AutoLongName)
                    {
                        uniqueName = pair.Left.Name.ToLowerInvariant();
                        pair.Right.LongName = uniqueName;
                    }
                    else
                    {
                        uniqueName = pair.Right.UniqueName;
                    }

                    map[uniqueName] = new OptionInfo(pair.Right, pair.Left, settings.ParsingCulture);
                }
            }

            map.RawOptions = target;
            return map;
        }
Example #17
0
 public Parser(Type type)
 {
     m_optionMap = OptionInfo.CreateMap(type);
 }
Example #18
0
 public OptionMapBuilder(int capacity)
 {
     _optionMap = new OptionMap(capacity, new CommandLineParserSettings(true));
     _options = new List<OptionInfo>(capacity);
     _names = new List<string>(capacity);
 }
Example #19
0
 public void ShutdownInstance()
 {
     _optionMap = null;
 }
Example #20
0
        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)));
            }
        }
Example #21
0
        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);
            }
        }
Example #22
0
 public void ShutdownInstance()
 {
     _optionMap = null;
 }
Example #23
0
 public void CreateInstance()
 {
     optionMap = new OptionMap(3);
 }
Example #24
0
        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));
        }
Example #25
0
 public OptionMapBuilder(int capacity)
 {
     _optionMap = new OptionMap(capacity, new ParserSettings(true));
     _options   = new List <OptionInfo>(capacity);
     _names     = new List <string>(capacity);
 }
Example #26
0
        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);
        }
Example #27
0
        public static OptionMap Create(
            object target,
            IList<Pair<PropertyInfo, VerbOptionAttribute>> verbs,
            IParserSettings settings)
        {
            var map = new OptionMap(verbs.Count, settings);

            foreach (var verb in verbs)
            {
                var optionInfo = new OptionInfo(verb.Right, verb.Left, settings.ParsingCulture)
                {
                    HasParameterLessCtor = verb.Left.PropertyType.GetConstructor(Type.EmptyTypes) != null
                };

                if (!optionInfo.HasParameterLessCtor && verb.Left.GetValue(target, null) == null)
                {
                    throw new ParserException("Type {0} must have a parameterless constructor or" +
                        " be already initialized to be used as a verb command.".FormatInvariant(verb.Left.PropertyType));
                }

                map[verb.Right.UniqueName] = optionInfo;
            }

            map.RawOptions = target;
            return map;
        }
Example #28
0
        void MyOnLoad(object sender, EventArgs e)
        {
            //TestBoundries();
            if (Environment.CommandLine.Contains("hide"))
            {
                this.Visible = false;
                //this.ShowInTaskbar = false;
            }
            if (Environment.CommandLine.Contains("HIDE"))
            {
                this.Visible       = false;
                this.ShowInTaskbar = false;
            }

            if (!Environment.CommandLine.Contains("config"))
            {
#if test
                button2.Enabled          = false;
                button3.Enabled          = false;
                button4.Enabled          = false;
                button5.Enabled          = false;
                button6.Enabled          = false;
                buttonOptionEdit.Enabled = false;
#endif
            }

            // might take this option out of the starter... and just Start...
#if asdfasdfasdf
            if (Options.Default["System:" + Environment.MachineName]["Bingo Game Core"]["External Game Data"]["Enable Reciever", "0"].Bool)
            {
                //String_Utilities.BuildSessionRangeCondition( null, DateTime.Now, 0 );
                BingoGameCore4.Networking.EltaninReceiver.BingodayChanged
                    += new BingoGameCore4.Networking.ExternalReceiver.OnBingodayChange(ExternalReceiver_BingodayChanged);
                BingoGameCore4.Networking.EltaninReceiver.SessionChanged
                    += new BingoGameCore4.Networking.ExternalReceiver.OnSessionChange(ExternalReceiver_SessionChanged);
                BingoGameCore4.Networking.EltaninReceiver.GameChanged
                    += new BingoGameCore4.Networking.ExternalReceiver.OnGameChange(ExternalReceiver_GameChanged);

                BingoGameCore4.Networking.ExternalReceiver.Start();
            }
#endif
            schedule_dsn = new DsnConnection(StaticDsnConnection.dsn.DataSource);
            schedule     = new OpenSkieScheduler3.ScheduleDataSet(schedule_dsn);
            schedule.Fill();

            BingoGameCore4.RateRank.Setup(schedule_dsn);
            BingoGameCore4.RateRank.game_points = new BingoGameCore4.Database.RankPointsExtended(schedule);
            input_db = new DsnConnection(Options.File("RateRank.ini")[Options.ProgramName + "/config"]["Input Database DSN", "MySQL"].Value);
            Text     = Text + "[" + input_db.DataSource + "]";

            OptionMap options = Options.Database(input_db)[Options.ProgramName];

            StateWriter.WritePackRateDetails = options["Write called_game_player_pack_stats (per card info)", "1"].Bool;


            if (options["config"]["Enable Game Check Timer", "0"].Bool)
            {
                timer_gameEventDataSet = new BingoGameEvent.GameEventDataSet(input_db);
                check_winner           = new System.Windows.Forms.Timer();
                check_winner.Interval  = options["config"]["Game Check Timer Length", "5000"].Integer;
                check_winner.Tick     += new EventHandler(check_winner_Tick);
                check_winner.Start();
            }


            monthCalendar1.ActiveMonth.Year       = DateTime.Now.Year;
            monthCalendar1.ActiveMonth.Month      = DateTime.Now.Month;
            monthCalendar1.MonthChanged          += new Pabo.Calendar.MonthChangedEventHandler(monthCalendar1_MonthChanged);
            monthCalendar1.DaySelected           += new Pabo.Calendar.DaySelectedEventHandler(monthCalendar1_DaySelected);
            listBoxSessions.SelectedIndexChanged += new EventHandler(listBoxSessions_SelectedIndexChanged);
            dataGridView1.SelectionChanged       += new EventHandler(dataGridView1_SelectionChanged);
            dataGridView1.MouseCaptureChanged    += new EventHandler(dataGridView1_MouseCaptureChanged);
        }