diff options
Diffstat (limited to 'IrcTokens/Extensions.cs')
-rw-r--r-- | IrcTokens/Extensions.cs | 62 |
1 files changed, 0 insertions, 62 deletions
diff --git a/IrcTokens/Extensions.cs b/IrcTokens/Extensions.cs deleted file mode 100644 index 4b23774..0000000 --- a/IrcTokens/Extensions.cs +++ /dev/null @@ -1,62 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; - -namespace IrcTokens -{ - public static class Extensions - { - public static IEnumerable<byte[]> Split(this byte[] bytes, byte separator) - { - if (bytes == null || bytes.Length == 0) return new List<byte[]>(); - - var newLineIndices = bytes.Select((b, i) => b == separator ? i : -1).Where(i => i != -1).ToArray(); - var lines = new byte[newLineIndices.Length + 1][]; - var currentIndex = 0; - var arrIndex = 0; - - for (var i = 0; i < newLineIndices.Length && currentIndex < bytes.Length; ++i) - { - var n = new byte[newLineIndices[i] - currentIndex]; - Array.Copy(bytes, currentIndex, n, 0, newLineIndices[i] - currentIndex); - currentIndex = newLineIndices[i] + 1; - lines[arrIndex++] = n; - } - - // Handle the last string at the end of the array if there is one. - if (currentIndex < bytes.Length) - lines[arrIndex] = bytes.Skip(currentIndex).ToArray(); - else if (arrIndex == newLineIndices.Length) - // We had a separator character at the end of a string. Rather than just allowing - // a null character, we'll replace the last element in the array with an empty string. - lines[arrIndex] = Array.Empty<byte>(); - - return lines.ToArray(); - } - - public static byte[] Trim(this IEnumerable<byte> bytes, byte separator) - { - if (bytes == null) return Array.Empty<byte>(); - - var byteList = new List<byte>(bytes); - var i = 0; - - if (!byteList.Any()) return byteList.ToArray(); - - while (byteList[i] == separator) - { - byteList.RemoveAt(i); - i++; - } - - i = byteList.Count - 1; - while (byteList[i] == separator) - { - byteList.RemoveAt(i); - i--; - } - - return byteList.ToArray(); - } - } -} |