format::desktop_entry: Add untested formatting function

This commit is contained in:
Sasha Koshka 2024-10-22 01:07:26 -04:00
parent 33a1d1bac1
commit 4f1b87181d

View File

@ -1,3 +1,4 @@
use fmt;
use locale;
use strings;
@ -42,3 +43,19 @@ export fn entry_finish(entr: entry) void = {
free(entr.value);
locale::finish(entr.locale);
};
// Formats a [[line]] and writes it to an [[io::handle]].
export fn fprint(output: io::handle, lin: line) (size | io::error) = match (lin) {
case blank => yield fmt::fprintln(output, lin);
case let lin: comment => yield fmt::fprintf(output, "#{}\n", lin: string);
case let lin: group_header => yield fmt::fprintf(output, "[{}]\n", lin: string);
case let lin: entry =>
let wrote = fmt::print(lin.key)?;
if (!locale::equal(locale::c, lin.locale)) {
let localestr = locale::format(lin.locale);
defer free(localestr);
wrote += fmt::printf("[{}]", localestr)?;
};
wrote += fmt::printf("={}\n", lin.value)?;
yield wrote;
};