using System; namespace IrcTokens { /// /// Represents the three parts of a hostmask. Parse with the constructor. /// public class Hostmask { public string NickName { get; set; } public string UserName { get; set; } public string HostName { get; set; } public override string ToString() => _source; public override int GetHashCode() => _source.GetHashCode(StringComparison.Ordinal); public override bool Equals(object obj) { if (obj == null || GetType() != obj.GetType()) return false; return _source == ((Hostmask) obj)._source; } private readonly string _source; public Hostmask(string source) { if (source == null) return; _source = source; if (source.Contains('@', StringComparison.Ordinal)) { var split = source.Split('@'); NickName = split[0]; HostName = split[1]; } else { NickName = source; } if (NickName.Contains('!', StringComparison.Ordinal)) { var userSplit = NickName.Split('!'); NickName = userSplit[0]; UserName = userSplit[1]; } } } }