Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Drawing;
- using System.IO;
- using System.Linq;
- using System.Runtime.InteropServices;
- using System.Text.RegularExpressions;
- using System.Windows.Forms;
- using output_parser.Properties;
- namespace output_parser
- {
- public partial class Form : System.Windows.Forms.Form
- {
- private static string[] toAppend;
- private static Font defaultFont;
- public Form()
- {
- InitializeComponent();
- defaultFont = text_box.Font;
- Load += load;
- FormClosing += close;
- }
- private void btn_browse_Click(object sender, EventArgs e)
- {
- var result = fileDialog.ShowDialog();
- if (result == DialogResult.OK)
- path.Text = fileDialog.FileName;
- else
- return;
- btn_open_Click(sender, e);
- }
- private void btn_open_Click(object sender, EventArgs e)
- {
- text_box.Clear();
- if (!string.IsNullOrEmpty(path.Text))
- toAppend = File.ReadAllLines(path.Text);
- remove_stuff();
- parse_text();
- parse_stack_trace();
- }
- private static void remove_stuff()
- {
- var str = toAppend.Aggregate("", (current, s) => current + (s + "\n"));
- //str = Regex.Replace(str, @"\(Filename.+?:\s([\-\d]+)\)", "--------------------$1--------------------");
- str = Regex.Replace(str, @"\(Filename: .*?\)\n\n", ""); //(Filename: Line: 1638)
- str = Regex.Replace(str, @"Loading.+\n", ""); //Loading C:\...\*.dll into Unity Child Domain
- str = Regex.Replace(str, @"The.+Beh.+sing!\s+", ""); //The referenced script on this Behaviour is missing!
- str = Regex.Replace(str, @"\n(?=\s+\n)", ""); //space & new line
- str = str.Replace("(this message is harmless)", "");
- str = Regex.Replace(str, @"(\..+)\s(\(.*?\))", "$1$2");
- toAppend = str.Split(new []{ "\n" }, StringSplitOptions.None);
- }
- private void parse_text()
- {
- for (var i = 0; i < toAppend.Length - 1; i++)
- {
- var str = toAppend[i];
- var color = Color.White;
- var nFont = defaultFont;
- if (Regex.Match(str, @"^(?:\s+)?[\w\d]+?:").Success && !str.Contains("Exception")) //todo put me in a method
- color = Color.FromArgb(0, 255, 81);
- if (Regex.Match(str, @"^(?:.+)?assembly:").Success)
- color = Color.FromArgb(255, 200, 0);
- if (str.Contains("nused"))
- color = Color.FromArgb(117, 209, 191);
- if (Regex.Match(str, @"^On[\w\d]+").Success)
- color = Color.FromArgb(0, 182, 255);
- if (str.Contains("/") && str.Contains("\""))
- color = Color.FromArgb(255, 70, 0);
- if (str.Contains(">>>>"))
- color = Color.FromArgb(232, 0, 255);
- if (str.Contains("Exception"))
- color = Color.FromArgb(255, 130, 177);
- if (str.StartsWith(" at"))
- color = Color.FromArgb(187, 62, 109);
- if (str.StartsWith("="))
- {
- color = Color.FromArgb(255, 50, 50);
- nFont = new Font(defaultFont.FontFamily, 17, FontStyle.Bold);
- }
- text_box.SelectionColor = color;
- text_box.SelectionFont = nFont;
- text_box.AppendText(str);
- if (!toAppend[i + 1].StartsWith(" at") || str.Contains("Exception"))
- text_box.AppendText("\n");
- /*if (!toAppend[i + 1].StartsWith(" at") || !str.Contains("Exception"))
- text_box.AppendText("\n");*/
- }
- }
- private void parse_stack_trace()
- {
- var matches = Regex.Matches(text_box.Text, @"t\s([A-Za-z0-9_]+)\.(.+){1}(\(.*?\))");
- for (var i = 0; i < matches.Count; i++)
- {
- var idx = matches[i].Index;
- var aa = text_box.Text.IndexOf(matches[i].Groups[1].Value, idx, StringComparison.Ordinal);
- var bb = text_box.Text.IndexOf(matches[i].Groups[2].Value, idx, StringComparison.Ordinal);
- var cc = text_box.Text.IndexOf(matches[i].Groups[3].Value, idx, StringComparison.Ordinal);
- //Namespace | Library
- text_box.SelectionStart = aa; //plus 1 for the \s in the regex
- text_box.SelectionLength = matches[i].Groups[1].Value.Length;
- text_box.SelectionColor = Color.FromArgb(255, 220, 0);
- //Class | Method
- text_box.SelectionStart = bb;
- text_box.SelectionLength = matches[i].Groups[2].Value.Length;
- text_box.SelectionColor = Color.FromArgb(255, 128, 0);
- //Signature
- text_box.SelectionStart = cc;
- text_box.SelectionLength = matches[i].Groups[3].Value.Length;
- text_box.SelectionColor = Color.FromArgb(255, 54, 0);
- }
- }
- private void load(object sender, EventArgs e)
- {
- path.Text = Settings.Default.Path;
- if (Settings.Default.Maximised)
- {
- WindowState = FormWindowState.Maximized;
- Location = Settings.Default.Location;
- Size = Settings.Default.Size;
- }
- else if (Settings.Default.Minimised)
- {
- WindowState = FormWindowState.Minimized;
- Location = Settings.Default.Location;
- Size = Settings.Default.Size;
- }
- else
- {
- Location = Settings.Default.Location;
- Size = Settings.Default.Size;
- }
- }
- private void close(object sender, EventArgs e)
- {
- Settings.Default.Path = path.Text;
- if (WindowState == FormWindowState.Maximized)
- {
- Settings.Default.Location = RestoreBounds.Location;
- Settings.Default.Size = RestoreBounds.Size;
- Settings.Default.Maximised = true;
- Settings.Default.Minimised = false;
- }
- else if (WindowState == FormWindowState.Normal)
- {
- Settings.Default.Location = Location;
- Settings.Default.Size = Size;
- Settings.Default.Maximised = false;
- Settings.Default.Minimised = false;
- }
- else
- {
- Settings.Default.Location = RestoreBounds.Location;
- Settings.Default.Size = RestoreBounds.Size;
- Settings.Default.Maximised = false;
- Settings.Default.Minimised = true;
- }
- Settings.Default.Save();
- }
- private void btn_settings_Click(object sender, EventArgs e)
- {
- var frm = new System.Windows.Forms.Form()
- {
- };
- frm.Show();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement