using System; namespace IrcTokens { /// /// Represents the three parts of a hostmask. Parse with the constructor. /// public class Hostmask : IEquatable { public string NickName { get; set; } public string UserName { get; set; } public string HostName { get; set; } public override string ToString() { return _source; } public override int GetHashCode() { return _source.GetHashCode(StringComparison.Ordinal); } public bool Equals(Hostmask other) { if (other == null) { return false; } return _source == other._source; } public override bool Equals(object obj) { return Equals(obj as Hostmask); } 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]; } } } }