mirror of
https://codeberg.org/unspeaker/perch.git
synced 2025-12-06 09:36:42 +01:00
wip: clarify field macro signature
This commit is contained in:
parent
332869c5cb
commit
e8a7c0682c
1 changed files with 68 additions and 28 deletions
|
|
@ -211,8 +211,30 @@ macro_rules! generated_field {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
generated_field!(hash = |self|match self {
|
||||
Metadata::Image { hash, .. } => Some(hash.clone()),
|
||||
Metadata::Music { hash, .. } => Some(hash.clone()),
|
||||
Metadata::Unknown { hash, .. } => Some(hash.clone()),
|
||||
_ => None
|
||||
});
|
||||
|
||||
generated_field!(size = |self|match self {
|
||||
Metadata::Image { size, .. } => Some(size.clone()),
|
||||
Metadata::Music { size, .. } => Some(size.clone()),
|
||||
Metadata::Unknown { size, .. } => Some(size.clone()),
|
||||
_ => None
|
||||
});
|
||||
|
||||
macro_rules! music_tag_field {
|
||||
($get:ident $set:ident $del:ident $key:expr; write = $write:expr; parse = $parse:expr;) => {
|
||||
(
|
||||
key = $key:expr,
|
||||
get = $get:ident,
|
||||
set = $set:ident,
|
||||
del = $del:ident,
|
||||
write = $write:expr,
|
||||
parse = $parse:expr,
|
||||
) => {
|
||||
impl Entry {
|
||||
pub fn $get (&self) -> Option<Arc<str>> {
|
||||
self.info.read().unwrap().$get()
|
||||
|
|
@ -326,30 +348,48 @@ macro_rules! music_tag_field {
|
|||
}
|
||||
};
|
||||
}
|
||||
generated_field!(hash = |self|match self {
|
||||
Metadata::Image { hash, .. } => Some(hash.clone()),
|
||||
Metadata::Music { hash, .. } => Some(hash.clone()),
|
||||
Metadata::Unknown { hash, .. } => Some(hash.clone()),
|
||||
_ => None
|
||||
});
|
||||
generated_field!(size = |self|match self {
|
||||
Metadata::Image { size, .. } => Some(size.clone()),
|
||||
Metadata::Music { size, .. } => Some(size.clone()),
|
||||
Metadata::Unknown { size, .. } => Some(size.clone()),
|
||||
_ => None
|
||||
});
|
||||
music_tag_field!(artist set_artist remove_artist ItemKey::TrackArtist;
|
||||
write = |value: Cow<str>|value.into();
|
||||
parse = |value: &str|Ok::<String, ()>(value.trim()););
|
||||
music_tag_field!(year set_year remove_year ItemKey::Year;
|
||||
write = |value: u32|format!("{value}").into();
|
||||
parse = |value: &str|value.trim().parse::<u32>(););
|
||||
music_tag_field!(album set_album remove_album ItemKey::AlbumTitle;
|
||||
write = |value: Cow<str>|value.into();
|
||||
parse = |value: &str|Ok::<String, ()>(value.trim().into()););
|
||||
music_tag_field!(track set_track remove_track ItemKey::TrackNumber;
|
||||
write = |value: u32|format!("{value}").into();
|
||||
parse = |value: &str|value.trim().parse::<u32>(););
|
||||
music_tag_field!(title set_title remove_title ItemKey::TrackTitle;
|
||||
write = |value: Cow<str>|value.into();
|
||||
parse = |value: &str|Ok::<String, ()>(value.trim().into()););
|
||||
|
||||
music_tag_field! {
|
||||
key = ItemKey::TrackArtist,
|
||||
get = artist,
|
||||
set = set_artist,
|
||||
del = remove_artist,
|
||||
write = |value: Cow<str>|value.into(),
|
||||
parse = |value: &str|Ok::<String, ()>(value.trim()),
|
||||
}
|
||||
|
||||
music_tag_field! {
|
||||
key = ItemKey::Year,
|
||||
get = year,
|
||||
set = set_year,
|
||||
del = remove_year,
|
||||
write = |value: u32|format!("{value}").into(),
|
||||
parse = |value: &str|value.trim().parse::<u32>(),
|
||||
}
|
||||
|
||||
music_tag_field! {
|
||||
key = ItemKey::AlbumTitle,
|
||||
get = album,
|
||||
set = set_album,
|
||||
del = remove_album,
|
||||
write = |value: Cow<str>|value.into(),
|
||||
parse = |value: &str|Ok::<String, ()>(value.trim().into()),
|
||||
}
|
||||
|
||||
music_tag_field! {
|
||||
key = ItemKey::TrackNumber,
|
||||
get = track,
|
||||
set = set_track,
|
||||
del = remove_track,
|
||||
write = |value: u32|format!("{value}").into(),
|
||||
parse = |value: &str|value.trim().parse::<u32>(),
|
||||
}
|
||||
|
||||
music_tag_field! {
|
||||
key = ItemKey::TrackTitle,
|
||||
get = title,
|
||||
set = set_title,
|
||||
del = remove_title,
|
||||
write = |value: Cow<str>|value.into(),
|
||||
parse = |value: &str|Ok::<String, ()>(value.trim().into()),
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue