hare-xdg/format/desktop_entry/desktop_entry.ha

45 lines
1.0 KiB
Hare
Raw Normal View History

use locale;
use strings;
2024-10-03 17:52:17 -06:00
// A line in the file, which can be a comment (or a blank line), an entry, or
// a localized entry.
export type line = (blank | comment | group_header | entry);
2024-10-12 20:12:43 -06:00
// A blank line.
// Specification: §3.1
export type blank = void;
2024-10-03 17:52:17 -06:00
// A comment.
// Specification: §3.1
export type comment = str;
2024-10-03 17:52:17 -06:00
// A group header.
// Specification: §3.2
export type group_header = str;
2024-10-19 14:23:13 -06:00
// An entry in a desktop file. Entries without an explicitly stated locale are
// assigned [[locale::c]].
// Specification: §3.3, §5
export type entry = struct {
group: str,
key: str,
value: str,
locale: locale::locale,
};
// Duplicates an [[entry]]. Use [[entry_finish]] to get rid of it.
export fn entry_dup(entr: entry) entry = entry {
group = strings::dup(entr.group),
key = strings::dup(entr.key),
value = strings::dup(entr.value),
locale = locale::dup(entr.locale),
};
// Frees memory associated with an [[entry]].
export fn entry_finish(entr: entry) void = {
free(entr.group);
free(entr.key);
free(entr.value);
locale::finish(entr.locale);
};