about summary refs log blame commit diff
path: root/IrcTokens/StatefulDecoder.cs
blob: 65dd3deb2470a778e310798a435b08d29913261e (plain) (tree)
































                                                  
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();
        }
    }
}