コード例 #1
0
ファイル: Option.Do.cs プロジェクト: KAW0/AscheLib.UniMonad
            public IOptionResult <T> RunOption()
            {
                IOptionResult <T> result = _self.RunOption();

                _action(result);
                return(result);
            }
コード例 #2
0
ファイル: MyOptionsArray.cs プロジェクト: PonomarevSA/Rossko
 public MyOptionsArray(IRosskoRepository repository, IValidate validator,
                       IJsonResult jsonResult, IOptionResult optionResult)
 {
     this.repository   = repository;
     this.validator    = validator;
     this.jsonResult   = jsonResult;
     this.optionResult = optionResult;
 }
コード例 #3
0
            public IOptionResult <T> Run()
            {
                IOptionResult <T> result = _self.Run();

                if (!result.IsNone)
                {
                    return(result);
                }
                return(_selector().Run());
            }
コード例 #4
0
            public IOptionResult <TResult> RunOption()
            {
                IOptionResult <T> result = _self.RunOption();

                if (!result.IsNone)
                {
                    return(new JustResult <TResult>(_selector(result.Value)));
                }
                return(NoneResult <TResult> .Default);
            }
コード例 #5
0
            public IOptionResult <T> RunOption()
            {
                IOptionResult <T> result = _self.RunOption();

                if (result.IsNone)
                {
                    _action();
                }
                return(result);
            }
コード例 #6
0
ファイル: Option.Zip.cs プロジェクト: KAW0/AscheLib.UniMonad
            public IOptionResult <TResult> RunOption()
            {
                IOptionResult <TFirst>  selfResult   = _self.RunOption();
                IOptionResult <TSecond> secondResult = _second.RunOption();

                if (!selfResult.IsNone && !secondResult.IsNone)
                {
                    return(new JustResult <TResult>(_resultSelector(selfResult.Value, secondResult.Value)));
                }
                return(NoneResult <TResult> .Default);
            }
コード例 #7
0
        public static void Execute <T>(this IOptionMonad <T> self)
        {
            IOptionResult <T> selfResult = self.RunOption();

            if (selfResult.IsNone)
            {
                return;
            }
            else
            {
                return;
            }
        }
コード例 #8
0
ファイル: Option.If.cs プロジェクト: KAW0/AscheLib.UniMonad
            public IOptionResult <T> RunOption()
            {
                IOptionResult <T> result = _self.RunOption();

                if (_selector(result))
                {
                    return(result);
                }
                else
                {
                    return(NoneResult <T> .Default);
                }
            }
コード例 #9
0
ファイル: Option.If.cs プロジェクト: KAW0/AscheLib.UniMonad
            public IOptionResult <T> RunOption()
            {
                IOptionResult <T> result = _self.RunOption();

                if (_selector(result))
                {
                    return(result);
                }
                else
                {
                    return(_elseSource.RunOption());
                }
            }
コード例 #10
0
        public static void Execute <T>(this IOptionMonad <T> self, Action <T> onJust)
        {
            IOptionResult <T> selfResult = self.RunOption();

            if (selfResult.IsNone)
            {
                return;
            }
            else
            {
                onJust(selfResult.Value);
                return;
            }
        }
コード例 #11
0
ファイル: Parser.cs プロジェクト: strombetta/xsimplicity
        private void ParseOptionArgument(Token token, IOptionResult option, IList arguments)
        {
            if (token.Type != TokenType.OptionArgument)
            {
                throw new ArgumentException(nameof(token));
            }
            if (option == null)
            {
                throw new ArgumentNullException(nameof(option));
            }
            if (option.IsCompleted)
            {
                throw new ArgumentException(nameof(option));
            }

            if (!option.AcceptMoreArguments)
            {
                option.Argument = token.Value;
            }
            else
            {
                arguments.Add(token.Value);
            }
        }
コード例 #12
0
ファイル: Parser.cs プロジェクト: strombetta/xsimplicity
        /// <summary>
        /// Parses the command line arguments.
        /// </summary>
        /// <param name="definitions">A collection of command line arguments.</param>
        /// <param name="args"></param>
        /// <returns></returns>
        public ParserResult Parse(IEnumerable <IDefinition> definitions, String[] args)
        {
            if (definitions == null)
            {
                throw new ArgumentNullException(nameof(definitions));
            }
            if (!definitions.Any())
            {
                throw new ArgumentException(nameof(definitions));
            }

            var            result    = new ParserResult();
            ICommandResult command   = null;
            IOptionResult  option    = null;
            Object         arguments = null;

            var tokens = new Queue <Token>(_tokenizer.Tokenize(args, definitions));

            while (tokens.Any())
            {
                var token = tokens.Dequeue();
                switch (token.Type)
                {
                case TokenType.Argument:
                    var argument = new ArgumentResult <String>(token.Value);
                    if (command == null)
                    {
                        result.Items.Add(argument);
                    }
                    else
                    {
                        command.Argument = argument;
                    }
                    break;

                case TokenType.Command:
                    command = ParseCommand(token, definitions);
                    result.Items.Add(command);
                    break;

                case TokenType.EndListOfOptionArguments:
                    option.Argument = arguments;
                    break;

                case TokenType.StartListOfOptionArguments:
                    var innerType = option.Definition.Argument.GetType().GenericTypeArguments[0].GenericTypeArguments[0];
                    var type      = typeof(List <>).MakeGenericType(innerType);
                    arguments = Activator.CreateInstance(type);
                    break;

                case TokenType.Option:
                    option = ParseOption(token, definitions);
                    result.Items.Add(option);
                    break;

                case TokenType.OptionArgument:
                    ParseOptionArgument(token, option, (IList)arguments);
                    break;
                }
            }
            return(result);
        }