macro_rules! options {
($($field:ident),+ $(,)?) => {
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(default))]
pub struct Options {
$(pub $field: bool),+
}
impl Options {
pub const FIELDS: &'static [&'static str] = &[$(stringify!($field)),+];
}
impl Default for Options {
fn default() -> Self {
Options {
$($field: true),+
}
}
}
};
}
options! {
parse_episode,
parse_episode_title,
parse_file_checksum,
parse_file_extension,
parse_part,
parse_release_group,
parse_season,
parse_title,
parse_video_resolution,
parse_year,
}