Exemple #1
0
        protected sealed override async Task <Boolean> RunAsync(IConsoleRule <ConsoleKeyInfo> rule, IReaderMessage <ConsoleKeyInfo> message)
        {
            if (_active is not null)
            {
                if (message.Value.Key != ConsoleKey.Escape)
                {
                    return(await _active.ExecuteAsync(message).ConfigureAwait(false));
                }

                _active = null;
                return(true);
            }

            if (Rules.Count < 1)
            {
                return(true);
            }

            Action action = message.Value.Key switch
            {
                ConsoleKey.Enter => Enter,
                ConsoleKey.UpArrow => RuleUp,
                ConsoleKey.DownArrow => RuleDown,
                _ => null
            };

            if (action is null)
            {
                return(true);
            }

            action.Invoke();
            await RefreshAsync().ConfigureAwait(false);

            return(true);
        }
 public Boolean RemoveRule(ICommandRule <T> rule)
 {
     return(_rules.Remove(rule.Id));
 }
 public Boolean AddRule(ICommandRule <T> rule)
 {
     return(rule is null || _rules.TryAdd(rule.Id, rule));
 }
Exemple #4
0
 public void RegisterCommand(ICommandRule rule)
 {
     CommandManager.Add(rule);
 }
Exemple #5
0
 protected void Enter()
 {
     _active = Rules.GetValueByIndex(_selected);
 }
Exemple #6
0
 public static void Add(ICommandRule rule)
 {
     _syntax.Add(rule);
 }