diff options
author | Ben Harris <ben@tilde.team> | 2020-04-20 17:24:59 -0400 |
---|---|---|
committer | Ben Harris <ben@tilde.team> | 2020-04-20 17:24:59 -0400 |
commit | 6a3bfd314d87bed96611d24440b0961a06bf7e91 (patch) | |
tree | 5652d9ab48d850b7c9bd905b49b6d2709ae849c8 /IrcTokens/Line.cs | |
parent | 616abc70303990fbf8096fc6ada5fac100a6c66a (diff) |
stateful in progress
Diffstat (limited to 'IrcTokens/Line.cs')
-rw-r--r-- | IrcTokens/Line.cs | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/IrcTokens/Line.cs b/IrcTokens/Line.cs index 7592376..6198c04 100644 --- a/IrcTokens/Line.cs +++ b/IrcTokens/Line.cs @@ -15,10 +15,20 @@ namespace IrcTokens public List<string> Params { get; set; } private Hostmask _hostmask; - private string _rawLine; + private readonly string _rawLine; - public override string ToString() => - $"Line(tags={string.Join(";", Tags.Select(kvp => $"{kvp.Key}={kvp.Value}"))}, params={string.Join(",", Params)})"; + public override string ToString() => + $"Line(source={Source}, command={Command}, tags={string.Join(";", Tags.Select(kvp => $"{kvp.Key}={kvp.Value}"))}, params={string.Join(",", Params)})"; + + public override int GetHashCode() => Format().GetHashCode(); + + public override bool Equals(object obj) + { + if (obj == null || GetType() != obj.GetType()) + return false; + + return Format() == ((Line) obj).Format(); + } public Hostmask Hostmask => _hostmask ??= new Hostmask(Source); @@ -108,9 +118,7 @@ namespace IrcTokens } if (Source != null) - { outs.Add($":{Source}"); - } outs.Add(Command); @@ -122,13 +130,13 @@ namespace IrcTokens foreach (var p in Params) { if (p.Contains(' ')) - throw new ArgumentException("non-last parameters cannot have spaces"); + throw new ArgumentException("non-last parameters cannot have spaces", p); if (p.StartsWith(':')) - throw new ArgumentException("non-last parameters cannot start with colon"); + throw new ArgumentException("non-last parameters cannot start with colon", p); } outs.AddRange(Params); - if (last == null || string.IsNullOrWhiteSpace(last) || last.Contains(' ') || last.StartsWith(':')) + if (string.IsNullOrWhiteSpace(last) || last.Contains(' ') || last.StartsWith(':')) last = $":{last}"; outs.Add(last); } |