use super::{MetadataTag, util::impl_metadata_mapping};
use crate::metadata::error::InvalidMetadataTagName;
#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct AvLibTag {
inner: MetadataTag,
}
impl_metadata_mapping!(
AvLibTag,
"album" => Album ,
"album-sort" => AlbumSort,
"album_artist" => AlbumArtist,
"artist" => Artist,
"artist-sort" => ArtistSort,
"compilation" => Compilation,
"composer" => Composer,
"copyright" => Copyright,
"date" => Date,
"disc" => DiscNumber,
"encoded_by" => EncodedBy,
"encoder" => EncoderSettings,
"genre" => Genre,
"grouping" => Grouping,
"language" => Language,
"lyrics" => Lyrics,
"performer" => Performer,
"publisher" => Label,
"title" => Title,
"title-sort" => TitleSort,
"track" => TrackNumber
);
#[cfg(test)]
mod test {
use crate::metadata::avlib::LOOKUP_TABLE;
#[test]
fn is_inner_table_sorted() {
let is_sorted = LOOKUP_TABLE.is_sorted_by(|a, b| match a.0.cmp(b.0) {
core::cmp::Ordering::Greater => false,
_ => true,
});
assert!(
is_sorted,
"make sure the impl_metadata_mapping tags are sorted on the code"
);
}
}