mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-09-13 10:52:08 +02:00
TerminalFont: support JSON format
This commit is contained in:
@@ -49,7 +49,7 @@ void ffPrintTerminalFont(FFTerminalFontOptions* options)
|
||||
|
||||
void ffInitTerminalFontOptions(FFTerminalFontOptions* options)
|
||||
{
|
||||
ffOptionInitModuleBaseInfo(&options->moduleInfo, FF_TERMINALFONT_MODULE_NAME, ffParseTerminalFontCommandOptions, ffParseTerminalFontJsonObject, ffPrintTerminalFont, NULL);
|
||||
ffOptionInitModuleBaseInfo(&options->moduleInfo, FF_TERMINALFONT_MODULE_NAME, ffParseTerminalFontCommandOptions, ffParseTerminalFontJsonObject, ffPrintTerminalFont, ffGenerateTerminalFontJson);
|
||||
ffOptionInitModuleArg(&options->moduleArgs);
|
||||
}
|
||||
|
||||
@@ -84,3 +84,39 @@ void ffParseTerminalFontJsonObject(FFTerminalFontOptions* options, yyjson_val* m
|
||||
ffPrintError(FF_TERMINALFONT_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key);
|
||||
}
|
||||
}
|
||||
|
||||
void ffGenerateTerminalFontJson(FF_MAYBE_UNUSED FFTerminalOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module)
|
||||
{
|
||||
FFTerminalFontResult result;
|
||||
ffFontInit(&result.font);
|
||||
ffFontInit(&result.fallback);
|
||||
ffStrbufInit(&result.error);
|
||||
|
||||
if(!ffDetectTerminalFont(&result))
|
||||
{
|
||||
yyjson_mut_obj_add_strbuf(doc, module, "error", &result.error);
|
||||
return;
|
||||
}
|
||||
|
||||
yyjson_mut_val* obj = yyjson_mut_obj_add_obj(doc, module, "result");
|
||||
|
||||
yyjson_mut_val* font = yyjson_mut_obj_add_obj(doc, obj, "font");
|
||||
yyjson_mut_obj_add_strbuf(doc, font, "name", &result.font.name);
|
||||
yyjson_mut_obj_add_strbuf(doc, font, "size", &result.font.size);
|
||||
yyjson_mut_val* fontStyles = yyjson_mut_obj_add_arr(doc, font, "styles");
|
||||
FF_LIST_FOR_EACH(FFstrbuf, style, result.font.styles)
|
||||
{
|
||||
yyjson_mut_arr_add_strbuf(doc, fontStyles, style);
|
||||
}
|
||||
yyjson_mut_obj_add_strbuf(doc, font, "pretty", &result.font.pretty);
|
||||
|
||||
yyjson_mut_val* fallback = yyjson_mut_obj_add_obj(doc, obj, "fallback");
|
||||
yyjson_mut_obj_add_strbuf(doc, fallback, "name", &result.fallback.name);
|
||||
yyjson_mut_obj_add_strbuf(doc, fallback, "size", &result.fallback.size);
|
||||
yyjson_mut_val* fallbackStyles = yyjson_mut_obj_add_arr(doc, fallback, "styles");
|
||||
FF_LIST_FOR_EACH(FFstrbuf, style, result.fallback.styles)
|
||||
{
|
||||
yyjson_mut_arr_add_strbuf(doc, fallbackStyles, style);
|
||||
}
|
||||
yyjson_mut_obj_add_strbuf(doc, fallback, "pretty", &result.fallback.pretty);
|
||||
}
|
||||
|
||||
@@ -9,3 +9,4 @@ void ffInitTerminalFontOptions(FFTerminalFontOptions* options);
|
||||
bool ffParseTerminalFontCommandOptions(FFTerminalFontOptions* options, const char* key, const char* value);
|
||||
void ffDestroyTerminalFontOptions(FFTerminalFontOptions* options);
|
||||
void ffParseTerminalFontJsonObject(FFTerminalFontOptions* options, yyjson_val* module);
|
||||
void ffGenerateTerminalFontJson(FFTerminalOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module);
|
||||
|
||||
Reference in New Issue
Block a user