From 07c2a32cddec75bacfec70bcb4ff085fb983dc29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ferit=20Yi=C4=9Fit=20BALABAN?= Date: Fri, 29 Oct 2021 01:13:34 +0300 Subject: [PATCH] Added Extensions.cs with static methods --- Extensions.cs | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 Extensions.cs diff --git a/Extensions.cs b/Extensions.cs new file mode 100644 index 0000000..86b9a33 --- /dev/null +++ b/Extensions.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace processor +{ + internal static class Extensions + { + internal static string RemoveComment(string text) + { + int idx = text.LastIndexOf("#"); + return idx > 0 ? text.Substring(0, idx) : ""; + } + + /// + /// Removes leading 0x prefix in hexadecimal instructions, only returning 4 char part + /// + /// + /// + internal static string RemoveLeading(string text) + { + if (text.Contains("0x")) return text.Remove(0, 2); + MessageBox.Show("Error while parsing code:\nHexadecimal instruction codes must start with \"0x\"!", "Vole Language Parser"); + return ""; + } + + public static IEnumerable Split2(this string text) + { + for (int i = 0; i < text.Length; i += 2) + yield return text.Substring(i, Math.Min(2, text.Length - i)); + } + + internal static string ToBin(this int value) => Convert.ToString(value, 2).PadLeft(8, '0'); + + internal static string ToHex(this int value) => Convert.ToString(value, 16); + + internal static string ToHex2(this int value) => value.ToHex().PadLeft(2, '0'); + + internal static int Hex2Int(this string value) => Convert.ToInt32(value, 8); + } +}