IRC parsing, tokenization, and state handling in C#
at ircrobots 30 lines 801 B view raw
1using System.Collections.Generic; 2using System.Linq; 3 4namespace IRCRobots 5{ 6 public class Capability : ICapability 7 { 8 public string Name { get; set; } 9 public string DraftName { get; set; } 10 public string Alias { get; } 11 public IEnumerable<string> DependsOn { get; set; } 12 private IEnumerable<string> Caps { get; } 13 14 public Capability() 15 { 16 Alias ??= Name; 17 Caps = new List<string> {Name, DraftName}; 18 } 19 20 public string? Available(IEnumerable<string> capabilities) 21 { 22 return Caps.FirstOrDefault(cap => cap != null && capabilities.Contains(cap)); 23 } 24 25 public bool Match(string capability) 26 { 27 return Caps.Contains(capability); 28 } 29 } 30}