diff options
author | Ben Harris <ben@tilde.team> | 2020-04-28 01:52:24 -0400 |
---|---|---|
committer | Ben Harris <ben@tilde.team> | 2020-04-28 01:52:24 -0400 |
commit | 8bc9eb4b7556fab6ceea811e66267a5c7f7ecdc2 (patch) | |
tree | a47828482ebe083d55bfcafd6081140d05b77595 /IrcTokens | |
parent | f1c4ed9ae8d5a8d1b7da5f59c4802cef8326a7e2 (diff) |
fix some stateful stuff
Diffstat (limited to 'IrcTokens')
-rw-r--r-- | IrcTokens/Line.cs | 6 | ||||
-rw-r--r-- | IrcTokens/StatefulDecoder.cs | 14 |
2 files changed, 10 insertions, 10 deletions
diff --git a/IrcTokens/Line.cs b/IrcTokens/Line.cs index 2e6f696..f574e4e 100644 --- a/IrcTokens/Line.cs +++ b/IrcTokens/Line.cs @@ -201,9 +201,9 @@ namespace IrcTokens if (Params != null && Params.Any()) { var last = Params[^1]; - Params.RemoveAt(Params.Count - 1); + var withoutLast = Params.SkipLast(1).ToList(); - foreach (var p in Params) + foreach (var p in withoutLast) { if (p.Contains(' ', StringComparison.Ordinal)) throw new ArgumentException(@"non-last parameters cannot have spaces", p); @@ -212,7 +212,7 @@ namespace IrcTokens throw new ArgumentException(@"non-last parameters cannot start with colon", p); } - outs.AddRange(Params); + outs.AddRange(withoutLast); if (string.IsNullOrWhiteSpace(last) || last.Contains(' ', StringComparison.Ordinal) || last.StartsWith(':')) diff --git a/IrcTokens/StatefulDecoder.cs b/IrcTokens/StatefulDecoder.cs index bdaf81d..2db32f2 100644 --- a/IrcTokens/StatefulDecoder.cs +++ b/IrcTokens/StatefulDecoder.cs @@ -90,20 +90,20 @@ namespace IrcTokens } } - var decodeLines = new List<string>(); - foreach (var line in listLines.Select(l => l.ToArray())) + _buffer = listLines[^1].ToArray(); + + var decodeLines = new List<Line>(); + foreach (var line in listLines.SkipLast(1).Select(l => l.ToArray())) try { - decodeLines.Add(Encoding.GetString(line)); + decodeLines.Add(new Line(Encoding.GetString(line))); } catch (DecoderFallbackException) { - decodeLines.Add(Fallback.GetString(line)); + decodeLines.Add(new Line(Fallback.GetString(line))); } - return decodeLines - .Select(l => new Line(l)) - .ToList(); + return decodeLines; } } } |