2020-10-29 09:19:12 +00:00
|
|
|
module gogga;
|
|
|
|
|
|
|
|
import std.conv : to;
|
|
|
|
import std.stdio : write, stdout;
|
|
|
|
|
|
|
|
public enum DebugType
|
|
|
|
{
|
|
|
|
INFO,
|
|
|
|
WARNING,
|
|
|
|
ERROR
|
|
|
|
}
|
|
|
|
|
2021-03-17 07:59:43 +00:00
|
|
|
byte[] generateMessage(string message, DebugType debugType)
|
2020-10-29 09:19:12 +00:00
|
|
|
{
|
2021-03-17 07:59:43 +00:00
|
|
|
/* The generated message */
|
|
|
|
byte[] messageBytes;
|
2020-10-29 09:19:12 +00:00
|
|
|
|
|
|
|
/* If INFO, set green */
|
|
|
|
if(debugType == DebugType.INFO)
|
|
|
|
{
|
2021-03-17 07:59:43 +00:00
|
|
|
messageBytes = cast(byte[])[27, '[','3','2','m'];
|
2020-10-29 09:19:12 +00:00
|
|
|
}
|
|
|
|
/* If WARNING, set warning */
|
|
|
|
else if(debugType == DebugType.WARNING)
|
|
|
|
{
|
2021-03-17 07:59:43 +00:00
|
|
|
messageBytes = cast(byte[])[27, '[','3','5','m']; /* TODO: FInd yllow */
|
2020-10-29 09:19:12 +00:00
|
|
|
}
|
|
|
|
/* If ERROR, set error */
|
|
|
|
else if(debugType == DebugType.ERROR)
|
|
|
|
{
|
2021-03-17 07:59:43 +00:00
|
|
|
messageBytes = cast(byte[])[27, '[','3','1','m'];
|
2020-10-29 09:19:12 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/* Write the message type */
|
2021-03-17 07:59:43 +00:00
|
|
|
messageBytes ~= "["~to!(string)(debugType)~"] ";
|
2020-10-29 09:19:12 +00:00
|
|
|
|
|
|
|
/* Switch back color */
|
2021-03-17 07:59:43 +00:00
|
|
|
messageBytes ~= cast(byte[])[27, '[', '3', '9', 'm'];
|
2020-10-29 09:19:12 +00:00
|
|
|
|
2021-03-20 16:46:51 +00:00
|
|
|
/* Append message */
|
|
|
|
messageBytes ~= message;
|
|
|
|
|
2021-03-17 07:59:43 +00:00
|
|
|
return messageBytes;
|
|
|
|
}
|
|
|
|
|
|
|
|
void gprint(messageT)(messageT message, DebugType debugType = DebugType.INFO)
|
|
|
|
{
|
|
|
|
/* Generate the message */
|
|
|
|
byte[] messageBytes = generateMessage(message, debugType);
|
2020-10-29 09:19:12 +00:00
|
|
|
|
2021-03-17 07:59:43 +00:00
|
|
|
/* Print the message */
|
2021-03-20 16:45:34 +00:00
|
|
|
write(cast(string)messageBytes);
|
2020-10-29 09:19:12 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void gprintln(messageT)(messageT message, DebugType debugType = DebugType.INFO)
|
|
|
|
{
|
|
|
|
/* Generate the string to print */
|
|
|
|
string printStr = to!(string)(message)~"\n";
|
|
|
|
|
|
|
|
/* Call `gprint` */
|
|
|
|
gprint(printStr, debugType);
|
2023-01-07 16:12:03 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
unittest
|
|
|
|
{
|
|
|
|
alias debugTypes = __traits(allMembers, DebugType);
|
|
|
|
static foreach(debugType; debugTypes)
|
|
|
|
{
|
|
|
|
gprintln("Hello world", mixin("DebugType."~debugType));
|
|
|
|
}
|
2020-10-29 09:19:12 +00:00
|
|
|
}
|