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)); }
public void RegisterCommand(ICommandRule rule) { CommandManager.Add(rule); }
protected void Enter() { _active = Rules.GetValueByIndex(_selected); }
public static void Add(ICommandRule rule) { _syntax.Add(rule); }