Skip to content

Instantly share code, notes, and snippets.

@Sreyas-Sreelal
Last active August 19, 2023 07:03
Show Gist options
  • Save Sreyas-Sreelal/8e11f39a4ec88a2b6b3e6ba3db90744b to your computer and use it in GitHub Desktop.
Save Sreyas-Sreelal/8e11f39a4ec88a2b6b3e6ba3db90744b to your computer and use it in GitHub Desktop.
removeColorCode
#define RUN_TESTS
#include <YSI_Core\y_testing>
removeColorCode(const str[],output[])
{
new bad, out_track = -1, back_track;
for (new i, length = strlen(str); i < length; ++i)
{
if (str[i] == '{' && i < length - 1 - 7 && str[i + 7] == '}')
{
bad += 1;
back_track = i;
continue;
}
if (bad)
{
if (str[i] == '}')
{
bad -= 1;
}
else if (!('0' <= str[i] <= '9' || 'A' <= str[i] <= 'F'))
{
while (back_track <= i)
{
output[++out_track] = str[back_track++];
}
bad -= 1;
}
}
else
{
output[++out_track] = str[i];
}
}
output[++out_track] = '\0';
return out_track;
}
Test:removeColorCode()
{
new output[128];
removeColorCode("{}",output);
ASSERT_SAME(output,"{}");
removeColorCode("{{}}",output);
ASSERT_SAME(output,"{{}}");
removeColorCode("{yyyyyy}",output);
ASSERT_SAME(output,"{yyyyyy}");
removeColorCode("{{yyyyyy}}",output);
ASSERT_SAME(output,"{{yyyyyy}}");
removeColorCode("Hello World",output);
ASSERT_SAME(output,"Hello World");
removeColorCode("Hello{F5CD1B} World",output);
ASSERT_SAME(output,"Hello World");
removeColorCode("Hello{{F5CD1B}} World",output);
ASSERT_SAME(output,"Hello{} World");
removeColorCode("Hello{}} World",output);
ASSERT_SAME(output,"Hello{}} World");
removeColorCode("Hello{F5CD1B} World{FyCD1B}",output);
ASSERT_SAME(output,"Hello World{FyCD1B}");
removeColorCode("Hello{F5CD1BEEE} World{FyCD1B}",output);
ASSERT_SAME(output,"Hello{F5CD1BEEE} World{FyCD1B}");
return 1;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment