I've created a console customizer for a C# console application. This is not finished yet but I'm looking for tips, requests and suggestions so I can make some updates.
Sample Preview
enter image description here
The following code is use to create a customize Write()
and WriteLine()
and I also make some Typewriter effect on it.
namespace GetBootstrap.Styles
{
/// <summary>
/// Project Name: GetBootstrap v1.0.0
/// Language: Console C#
///
/// Developed by Leonel Sarmiento
/// Email: [email protected]
/// Website: http://stackoverflow.com/users/2575662/leo-sarmiento
/// </summary>
public static class Bootstrap
{
//Bootstrap.Write Basic
public static void Write(string style, string value)
{
switch(style)
{
case "Success":
Console.ForegroundColor = ConsoleColor.Green;
break;
case "Information":
Console.ForegroundColor = ConsoleColor.Cyan;
break;
case "Warning":
Console.ForegroundColor = ConsoleColor.Yellow;
break;
case "Danger":
Console.ForegroundColor = ConsoleColor.Red;
break;
default:
Console.ForegroundColor = ConsoleColor.Gray;
break;
}
Console.Write(value);
Console.ResetColor();
}
public static void Write(string value, int min, int max)
{
Random speed = new Random();
for (int t = 0; t < value.Count(); t++)
{
Thread.Sleep(Convert.ToInt32(speed.Next(min, max)));
Console.Write(value.Substring(t, 1));
}
}
public static void Write(string style, string value, int min, int max)
{
switch (style)
{
case "Success":
Console.ForegroundColor = ConsoleColor.Green;
break;
case "Information":
Console.ForegroundColor = ConsoleColor.Cyan;
break;
case "Warning":
Console.ForegroundColor = ConsoleColor.Yellow;
break;
case "Danger":
Console.ForegroundColor = ConsoleColor.Red;
break;
default:
Console.ForegroundColor = ConsoleColor.Gray;
break;
}
Random speed = new Random();
for (int t = 0; t < value.Count(); t++)
{
Thread.Sleep(Convert.ToInt32(speed.Next(min, max)));
Console.Write(value.Substring(t, 1));
}
Console.ResetColor();
}
//Bootstrap.Write with params
public static void Write(string style, string value, params object[] arg)
{
switch (style)
{
case "Success":
Console.ForegroundColor = ConsoleColor.Green;
break;
case "Information":
Console.ForegroundColor = ConsoleColor.Cyan;
break;
case "Warning":
Console.ForegroundColor = ConsoleColor.Yellow;
break;
case "Danger":
Console.ForegroundColor = ConsoleColor.Red;
break;
default:
Console.ForegroundColor = ConsoleColor.Gray;
break;
}
Console.Write(value, arg);
Console.ResetColor();
}
public static void Write(string value, int min, int max, params object[] arg)
{
Random speed = new Random();
value = string.Format(value, arg);
for (int t = 0; t < value.Count(); t++)
{
Thread.Sleep(Convert.ToInt32(speed.Next(min, max)));
Console.Write(value.Substring(t, 1));
}
}
public static void Write(string style, string value, int min, int max, params object[] arg)
{
switch (style)
{
case "Success":
Console.ForegroundColor = ConsoleColor.Green;
break;
case "Information":
Console.ForegroundColor = ConsoleColor.Cyan;
break;
case "Warning":
Console.ForegroundColor = ConsoleColor.Yellow;
break;
case "Danger":
Console.ForegroundColor = ConsoleColor.Red;
break;
default:
Console.ForegroundColor = ConsoleColor.Gray;
break;
}
Random speed = new Random();
value = string.Format(value, arg);
for (int t = 0; t < value.Count(); t++)
{
Thread.Sleep(Convert.ToInt32(speed.Next(min, max)));
Console.Write(value.Substring(t, 1));
}
Console.ResetColor();
}
//Bootstrap.WriteLine Basic
public static void WriteLine(string style, string value)
{
switch (style)
{
case "Success":
Console.ForegroundColor = ConsoleColor.Green;
break;
case "Information":
Console.ForegroundColor = ConsoleColor.Cyan;
break;
case "Warning":
Console.ForegroundColor = ConsoleColor.Yellow;
break;
case "Danger":
Console.ForegroundColor = ConsoleColor.Red;
break;
default:
Console.ForegroundColor = ConsoleColor.Gray;
break;
}
Console.WriteLine(value);
Console.ResetColor();
}
public static void WriteLine(string value, int min, int max)
{
Random speed = new Random();
for (int t = 0; t < value.Count(); t++)
{
Thread.Sleep(Convert.ToInt32(speed.Next(min, max)));
if (t != value.Count() - 1)
{
Console.Write(value.Substring(t, 1));
}
else
{
Console.WriteLine(value.Substring(t, 1));
}
}
}
public static void WriteLine(string style, string value, int min, int max)
{
switch (style)
{
case "Success":
Console.ForegroundColor = ConsoleColor.Green;
break;
case "Information":
Console.ForegroundColor = ConsoleColor.Cyan;
break;
case "Warning":
Console.ForegroundColor = ConsoleColor.Yellow;
break;
case "Danger":
Console.ForegroundColor = ConsoleColor.Red;
break;
default:
Console.ForegroundColor = ConsoleColor.Gray;
break;
}
Random speed = new Random();
for (int t = 0; t < value.Count(); t++)
{
Thread.Sleep(Convert.ToInt32(speed.Next(min, max)));
if (t != value.Count() - 1)
{
Console.Write(value.Substring(t, 1));
}
else
{
Console.WriteLine(value.Substring(t, 1));
}
}
Console.ResetColor();
}
//Bootstrap.WriteLine with params
public static void WriteLine(string style, string value, params object[] arg)
{
switch (style)
{
case "Success":
Console.ForegroundColor = ConsoleColor.Green;
break;
case "Information":
Console.ForegroundColor = ConsoleColor.Cyan;
break;
case "Warning":
Console.ForegroundColor = ConsoleColor.Yellow;
break;
case "Danger":
Console.ForegroundColor = ConsoleColor.Red;
break;
default:
Console.ForegroundColor = ConsoleColor.Gray;
break;
}
Console.WriteLine(value, arg);
Console.ResetColor();
}
public static void WriteLine(string value, int min, int max, params object[] arg)
{
Random speed = new Random();
value = string.Format(value, arg);
for (int t = 0; t < value.Count(); t++)
{
Thread.Sleep(Convert.ToInt32(speed.Next(min, max)));
if (t != value.Count() - 1)
{
Console.Write(value.Substring(t, 1));
}
else
{
Console.WriteLine(value.Substring(t, 1));
}
}
}
public static void WriteLine(string style, string value, int min, int max, params object[] arg)
{
switch (style)
{
case "Success":
Console.ForegroundColor = ConsoleColor.Green;
break;
case "Information":
Console.ForegroundColor = ConsoleColor.Cyan;
break;
case "Warning":
Console.ForegroundColor = ConsoleColor.Yellow;
break;
case "Danger":
Console.ForegroundColor = ConsoleColor.Red;
break;
default:
Console.ForegroundColor = ConsoleColor.Gray;
break;
}
Random speed = new Random();
value = string.Format(value, arg);
for (int t = 0; t < value.Count(); t++)
{
Thread.Sleep(Convert.ToInt32(speed.Next(min, max)));
if (t != value.Count() - 1)
{
Console.Write(value.Substring(t, 1));
}
else
{
Console.WriteLine(value.Substring(t, 1));
}
}
Console.ResetColor();
}
//Bootstrap.Alert Basic
public static void Alert(string style, string value)
{
switch (style)
{
case "Success":
Console.ForegroundColor = ConsoleColor.Green;
Console.BackgroundColor = ConsoleColor.DarkGreen;
break;
case "Information":
Console.ForegroundColor = ConsoleColor.Cyan;
Console.BackgroundColor = ConsoleColor.DarkCyan;
break;
case "Warning":
Console.ForegroundColor = ConsoleColor.Yellow;
Console.BackgroundColor = ConsoleColor.DarkYellow;
break;
case "Danger":
Console.ForegroundColor = ConsoleColor.Red;
Console.BackgroundColor = ConsoleColor.DarkRed;
break;
default:
Console.ForegroundColor = ConsoleColor.Gray;
Console.BackgroundColor = ConsoleColor.DarkGray;
break;
}
Console.Write(value);
Console.ResetColor();
}
public static void Alert(string style, string value, int min, int max)
{
switch (style)
{
case "Success":
Console.ForegroundColor = ConsoleColor.Green;
Console.BackgroundColor = ConsoleColor.DarkGreen;
break;
case "Information":
Console.ForegroundColor = ConsoleColor.Cyan;
Console.BackgroundColor = ConsoleColor.DarkCyan;
break;
case "Warning":
Console.ForegroundColor = ConsoleColor.Yellow;
Console.BackgroundColor = ConsoleColor.DarkYellow;
break;
case "Danger":
Console.ForegroundColor = ConsoleColor.Red;
Console.BackgroundColor = ConsoleColor.DarkRed;
break;
default:
Console.ForegroundColor = ConsoleColor.Gray;
Console.BackgroundColor = ConsoleColor.DarkGray;
break;
}
Random speed = new Random();
for (int t = 0; t < value.Count(); t++)
{
Thread.Sleep(Convert.ToInt32(speed.Next(min, max)));
Console.Write(value.Substring(t, 1));
}
Console.ResetColor();
}
//Bootstrap.Alert with params
public static void Alert(string style, string value, params object[] arg)
{
switch (style)
{
case "Success":
Console.ForegroundColor = ConsoleColor.Green;
Console.BackgroundColor = ConsoleColor.DarkGreen;
break;
case "Information":
Console.ForegroundColor = ConsoleColor.Cyan;
Console.BackgroundColor = ConsoleColor.DarkCyan;
break;
case "Warning":
Console.ForegroundColor = ConsoleColor.Yellow;
Console.BackgroundColor = ConsoleColor.DarkYellow;
break;
case "Danger":
Console.ForegroundColor = ConsoleColor.Red;
Console.BackgroundColor = ConsoleColor.DarkRed;
break;
default:
Console.ForegroundColor = ConsoleColor.Gray;
Console.BackgroundColor = ConsoleColor.DarkGray;
break;
}
Console.Write(value, arg);
Console.ResetColor();
}
public static void Alert(string style, string value, int min, int max, params object[] arg)
{
switch (style)
{
case "Success":
Console.ForegroundColor = ConsoleColor.Green;
Console.BackgroundColor = ConsoleColor.DarkGreen;
break;
case "Information":
Console.ForegroundColor = ConsoleColor.Cyan;
Console.BackgroundColor = ConsoleColor.DarkCyan;
break;
case "Warning":
Console.ForegroundColor = ConsoleColor.Yellow;
Console.BackgroundColor = ConsoleColor.DarkYellow;
break;
case "Danger":
Console.ForegroundColor = ConsoleColor.Red;
Console.BackgroundColor = ConsoleColor.DarkRed;
break;
default:
Console.ForegroundColor = ConsoleColor.Gray;
Console.BackgroundColor = ConsoleColor.DarkGray;
break;
}
Random speed = new Random();
value = string.Format(value, arg);
for (int t = 0; t < value.Count(); t++)
{
Thread.Sleep(Convert.ToInt32(speed.Next(min, max)));
Console.Write(value.Substring(t, 1));
}
Console.ResetColor();
}
//Bootstrap.AlertLineBasic
public static void AlertLine(string style, string value)
{
switch (style)
{
case "Success":
Console.ForegroundColor = ConsoleColor.Green;
Console.BackgroundColor = ConsoleColor.DarkGreen;
break;
case "Information":
Console.ForegroundColor = ConsoleColor.Cyan;
Console.BackgroundColor = ConsoleColor.DarkCyan;
break;
case "Warning":
Console.ForegroundColor = ConsoleColor.Yellow;
Console.BackgroundColor = ConsoleColor.DarkYellow;
break;
case "Danger":
Console.ForegroundColor = ConsoleColor.Red;
Console.BackgroundColor = ConsoleColor.DarkRed;
break;
default:
Console.ForegroundColor = ConsoleColor.Gray;
Console.BackgroundColor = ConsoleColor.DarkGray;
break;
}
Console.WriteLine(value);
Console.ResetColor();
}
public static void AlertLine(string style, string value, int min, int max)
{
switch (style)
{
case "Success":
Console.ForegroundColor = ConsoleColor.Green;
Console.BackgroundColor = ConsoleColor.DarkGreen;
break;
case "Information":
Console.ForegroundColor = ConsoleColor.Cyan;
Console.BackgroundColor = ConsoleColor.DarkCyan;
break;
case "Warning":
Console.ForegroundColor = ConsoleColor.Yellow;
Console.BackgroundColor = ConsoleColor.DarkYellow;
break;
case "Danger":
Console.ForegroundColor = ConsoleColor.Red;
Console.BackgroundColor = ConsoleColor.DarkRed;
break;
default:
Console.ForegroundColor = ConsoleColor.Gray;
Console.BackgroundColor = ConsoleColor.DarkGray;
break;
}
Random speed = new Random();
for (int t = 0; t < value.Count(); t++)
{
Thread.Sleep(Convert.ToInt32(speed.Next(min, max)));
if (t != value.Count() - 1)
{
Console.Write(value.Substring(t, 1));
}
else
{
Console.WriteLine(value.Substring(t, 1));
}
}
Console.ResetColor();
}
//Bootstrap.AlertLine with params
public static void AlertLine(string style, string value, params object[] arg)
{
switch (style)
{
case "Success":
Console.ForegroundColor = ConsoleColor.Green;
Console.BackgroundColor = ConsoleColor.DarkGreen;
break;
case "Information":
Console.ForegroundColor = ConsoleColor.Cyan;
Console.BackgroundColor = ConsoleColor.DarkCyan;
break;
case "Warning":
Console.ForegroundColor = ConsoleColor.Yellow;
Console.BackgroundColor = ConsoleColor.DarkYellow;
break;
case "Danger":
Console.ForegroundColor = ConsoleColor.Red;
Console.BackgroundColor = ConsoleColor.DarkRed;
break;
default:
Console.ForegroundColor = ConsoleColor.Gray;
Console.BackgroundColor = ConsoleColor.DarkGray;
break;
}
Console.WriteLine(value, arg);
Console.ResetColor();
}
public static void AlertLine(string style, string value, int min, int max, params object[] arg)
{
switch (style)
{
case "Success":
Console.ForegroundColor = ConsoleColor.Green;
Console.BackgroundColor = ConsoleColor.DarkGreen;
break;
case "Information":
Console.ForegroundColor = ConsoleColor.Cyan;
Console.BackgroundColor = ConsoleColor.DarkCyan;
break;
case "Warning":
Console.ForegroundColor = ConsoleColor.Yellow;
Console.BackgroundColor = ConsoleColor.DarkYellow;
break;
case "Danger":
Console.ForegroundColor = ConsoleColor.Red;
Console.BackgroundColor = ConsoleColor.DarkRed;
break;
default:
Console.ForegroundColor = ConsoleColor.Gray;
Console.BackgroundColor = ConsoleColor.DarkGray;
break;
}
Random speed = new Random();
value = string.Format(value, arg);
for (int t = 0; t < value.Count(); t++)
{
Thread.Sleep(Convert.ToInt32(speed.Next(min, max)));
if (t != value.Count() - 1)
{
Console.Write(value.Substring(t, 1));
}
else
{
Console.WriteLine(value.Substring(t, 1));
}
}
Console.ResetColor();
}
}
}
- Version: v1.0.0
- Download link
1 Answer 1
The main issue I can see is that you have duplicated your switch
statements mapping styles to colors about a gazillion times. This is not very maintainable. Imagine you add a new style
- you now have to add this to a lot of places and hope you didn't miss anything.
As far as I can see there are two types of mappings: One for Write/WriteLine
and one for Alert/AlterLine
- you should have two dedicated methods which translate the style
into the colors you require and then call these two methods in the appropriate places.
I would also consider making the style
an enum
rather than a string
as there seem to be fixed values. At least define public string constants for the different default names - this way someone could just use those constants and doesn't have to remember the correct name to put in.
There are other code duplications as well which you should try to avoid and extract into common methods.
-
\$\begingroup\$ Thank you for your response, I'm going to base onto your answer in my next update. \$\endgroup\$Onel Sarmiento– Onel Sarmiento2014年10月11日 04:19:38 +00:00Commented Oct 11, 2014 at 4:19
-
\$\begingroup\$ Where should I post my new update? Do I need to post new review? \$\endgroup\$Onel Sarmiento– Onel Sarmiento2014年10月22日 23:54:45 +00:00Commented Oct 22, 2014 at 23:54
-
1\$\begingroup\$ @Leonel: Yes just another question (maybe linked back to this one saying that you have rewritten some of the code) \$\endgroup\$ChrisWue– ChrisWue2014年10月23日 00:39:48 +00:00Commented Oct 23, 2014 at 0:39