about summary refs log tree commit diff
path: root/IrcTokens/StatefulDecoder.cs
diff options
context:
space:
mode:
authorBen Harris <ben@tilde.team>2020-04-20 17:24:59 -0400
committerBen Harris <ben@tilde.team>2020-04-20 17:24:59 -0400
commit6a3bfd314d87bed96611d24440b0961a06bf7e91 (patch)
tree5652d9ab48d850b7c9bd905b49b6d2709ae849c8 /IrcTokens/StatefulDecoder.cs
parent616abc70303990fbf8096fc6ada5fac100a6c66a (diff)
stateful in progress
Diffstat (limited to 'IrcTokens/StatefulDecoder.cs')
-rw-r--r--IrcTokens/StatefulDecoder.cs33
1 files changed, 33 insertions, 0 deletions
diff --git a/IrcTokens/StatefulDecoder.cs b/IrcTokens/StatefulDecoder.cs
new file mode 100644
index 0000000..65dd3de
--- /dev/null
+++ b/IrcTokens/StatefulDecoder.cs
@@ -0,0 +1,33 @@
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace IrcTokens
+{
+    public class StatefulDecoder
+    {
+        private string _buffer;
+        public EncodingInfo Encoding { get; set; }
+        public EncodingInfo Fallback { get; set; }
+
+        public string Pending => _buffer;
+
+        public void Clear()
+        {
+            _buffer = "";
+        }
+
+        public List<Line> Push(string data)
+        {
+            if (string.IsNullOrEmpty(data))
+                return null;
+
+            _buffer += data;
+            return _buffer
+                .Split('\n')
+                .Select(l => l.TrimEnd('\r'))
+                .Select(l => new Line(l))
+                .ToList();
+        }
+    }
+}