diff options
author | Ben Harris <ben@tilde.team> | 2020-04-28 00:35:52 -0400 |
---|---|---|
committer | Ben Harris <ben@tilde.team> | 2020-04-28 00:35:52 -0400 |
commit | 80afa2c0aec37b7f98cc22615417c36672e695da (patch) | |
tree | 63ca3e309a5daa5093e54bdfdb493115c7a3d942 /IrcTokens/Protocol.cs | |
parent | 933a4f85604e21445c9bac8272d64cf3e6f65e00 (diff) |
tidy up, work on stateful
Diffstat (limited to 'IrcTokens/Protocol.cs')
-rw-r--r-- | IrcTokens/Protocol.cs | 76 |
1 files changed, 0 insertions, 76 deletions
diff --git a/IrcTokens/Protocol.cs b/IrcTokens/Protocol.cs deleted file mode 100644 index 6ddb079..0000000 --- a/IrcTokens/Protocol.cs +++ /dev/null @@ -1,76 +0,0 @@ -using System; -using System.Globalization; -using System.Linq; -using System.Text; - -namespace IrcTokens -{ - internal class Protocol - { - private static readonly string[] TagUnescaped = - { - "\\", " ", ";", "\r", "\n" - }; - - private static readonly string[] TagEscaped = - { - "\\\\", "\\s", "\\:", "\\r", "\\n" - }; - - /// <summary> - /// Unescape ircv3 tag - /// </summary> - /// <param name="val">escaped string</param> - /// <returns>unescaped string</returns> - public static string UnescapeTag(string val) - { - var unescaped = new StringBuilder(); - - var graphemeIterator = StringInfo.GetTextElementEnumerator(val); - graphemeIterator.Reset(); - - while (graphemeIterator.MoveNext()) - { - var current = graphemeIterator.GetTextElement(); - - if (current == @"\") - { - try - { - graphemeIterator.MoveNext(); - var next = graphemeIterator.GetTextElement(); - var pair = current + next; - unescaped.Append(TagEscaped.Contains(pair) - ? TagUnescaped[Array.IndexOf(TagEscaped, pair)] - : next); - } - catch (InvalidOperationException) - { - // ignored - } - } - else - { - unescaped.Append(current); - } - } - - return unescaped.ToString(); - } - - /// <summary> - /// Escape strings for use in ircv3 tags - /// </summary> - /// <param name="val">string to escape</param> - /// <returns>escaped string</returns> - public static string EscapeTag(string val) - { - for (var i = 0; i < TagUnescaped.Length; ++i) - { - val = val.Replace(TagUnescaped[i], TagEscaped[i], StringComparison.Ordinal); - } - - return val; - } - } -} |