Config magic

This commit is contained in:
Krzosa Karol
2024-07-27 20:34:20 +02:00
parent 60f26ca40e
commit 052894a628
7 changed files with 282 additions and 9 deletions

View File

@@ -180,9 +180,102 @@ int CompileNewPlatform() {
return result;
}
char *ToColor(const char *value) {
S8_String f = Fmt("{0x%.*s, 0x%.*s, 0x%.*s, 0x%.*s}", 2, value + 2, 2, value + 4, 2, value + 6, 2, value + 8);
return f.str;
}
void GenerateConfig() {
struct Color {
const char *name;
const char *value;
};
// clang-format off
Array<Color> gruvbox = {};
gruvbox.add({"GruvboxDark0Hard" , "0x1d2021ff"});
gruvbox.add({"GruvboxDark0" , "0x282828ff"});
gruvbox.add({"GruvboxDark0Soft" , "0x32302fff"});
gruvbox.add({"GruvboxDark1" , "0x3c3836ff"});
gruvbox.add({"GruvboxDark2" , "0x504945ff"});
gruvbox.add({"GruvboxDark3" , "0x665c54ff"});
gruvbox.add({"GruvboxDark4" , "0x7c6f64ff"});
gruvbox.add({"GruvboxGray245" , "0x928374ff"});
gruvbox.add({"GruvboxGray244" , "0x928374ff"});
gruvbox.add({"GruvboxLight0Hard" , "0xf9f5d7ff"});
gruvbox.add({"GruvboxLight0" , "0xfbf1c7ff"});
gruvbox.add({"GruvboxLight0Soft" , "0xf2e5bcff"});
gruvbox.add({"GruvboxLight1" , "0xebdbb2ff"});
gruvbox.add({"GruvboxLight2" , "0xd5c4a1ff"});
gruvbox.add({"GruvboxLight3" , "0xbdae93ff"});
gruvbox.add({"GruvboxLight4" , "0xa89984ff"});
gruvbox.add({"GruvboxBrightRed" , "0xfb4934ff"});
gruvbox.add({"GruvboxBrightGreen" , "0xb8bb26ff"});
gruvbox.add({"GruvboxBrightYellow" , "0xfabd2fff"});
gruvbox.add({"GruvboxBrightBlue" , "0x83a598ff"});
gruvbox.add({"GruvboxBrightPurple" , "0xd3869bff"});
gruvbox.add({"GruvboxBrightAqua" , "0x8ec07cff"});
gruvbox.add({"GruvboxBrightOrange" , "0xfe8019ff"});
gruvbox.add({"GruvboxNeutralRed" , "0xcc241dff"});
gruvbox.add({"GruvboxNeutralGreen" , "0x98971aff"});
gruvbox.add({"GruvboxNeutralYellow", "0xd79921ff"});
gruvbox.add({"GruvboxNeutralBlue" , "0x458588ff"});
gruvbox.add({"GruvboxNeutralPurple", "0xb16286ff"});
gruvbox.add({"GruvboxNeutralAqua" , "0x689d6aff"});
gruvbox.add({"GruvboxNeutralOrange", "0xd65d0eff"});
gruvbox.add({"GruvboxFadedRed" , "0x9d0006ff"});
gruvbox.add({"GruvboxFadedGreen" , "0x79740eff"});
gruvbox.add({"GruvboxFadedYellow" , "0xb57614ff"});
gruvbox.add({"GruvboxFadedBlue" , "0x076678ff"});
gruvbox.add({"GruvboxFadedPurple" , "0x8f3f71ff"});
gruvbox.add({"GruvboxFadedAqua" , "0x427b58ff"});
gruvbox.add({"GruvboxFadedOrange" , "0xaf3a03ff"});
Array<Color> colors = {};
colors.add({"Text" , "GruvboxDark0Hard"});
colors.add({"Background" , "GruvboxLight0Hard"});
colors.add({"TextLineNumbers" , "GruvboxDark4"});
colors.add({"ScrollbarBackground" , "GruvboxLight2"});
colors.add({"ScrollbarScroller" , "GruvboxLight1"});
colors.add({"ScrollbarScrollerSelected", "GruvboxLight0Hard"});
colors.add({"LineHighlight" , "GruvboxLight1"});
colors.add({"MainCaret" , "GruvboxDark0Hard"});
colors.add({"SubCaret" , "GruvboxGray245"});
colors.add({"Selection" , "GruvboxLight1"});
colors.add({"WhitespaceDuringSelection", "GruvboxLight2"});
// clang-format on
{
MA_Scratch scratch;
Array<S8_String> sb = {MA_GetAllocator(scratch)};
{
For(gruvbox) sb.add(Fmt("Color %s = %s;", it.name, ToColor(it.value)));
For(colors) sb.add(Fmt("Color Color%s = %s;", it.name, it.value));
}
sb.add("String BaseLuaConfig = R\"==(");
{
For(gruvbox) sb.add(Fmt("local %s = %s", it.name, it.value));
sb.add("Color = {}");
For(colors) sb.add(Fmt("Color.%s = %s", it.name, it.value));
}
sb.add(")==\";");
sb.add("void ReloadColors() {");
{
For(colors) sb.add(Fmt(" Color%s = GetColor(\"%s\", Color%s);", it.name, it.name, it.name));
}
sb.add("}");
S8_String string = Merge(scratch, sb, "\n");
OS_WriteFile("../src/text_editor/generated.cpp", string);
}
}
int main() {
MA_InitScratch();
SRC_InitCache(Perm, "te.cache");
GenerateConfig();
int result = CompileTextEditor();
// int result = CompileNewPlatform();