Rename features

This commit is contained in:
Serial 2021-08-18 21:58:27 -04:00
parent 06bf9b0862
commit 60846d23dc
3 changed files with 49 additions and 53 deletions

View file

@ -28,17 +28,14 @@ byteorder = "1.4.3"
cfg-if = "1.0.0"
[features]
default = ["all_tags"]
format-mp4 = ["mp4ameta"]
format-flac = ["unicase"]
format-opus = ["ogg_pager", "unicase"]
format-vorbis = ["ogg_pager", "unicase"]
format-ape = ["unicase"]
format-id3 = ["id3", "filepath"]
format-aiff = []
format-riff = []
format-ogg = ["format-flac", "format-opus", "format-vorbis"]
all_tags = ["format-ogg", "format-mp4", "format-id3", "format-riff", "format-ape", "format-aiff"]
default = ["mp4_atoms", "vorbis_comments", "ape", "id3v1", "id3v2", "aiff_text_chunks", "riff_info_list"]
mp4_atoms = []
vorbis_comments = ["ogg_pager"]
ape = []
id3v1 = []
id3v2 = []
aiff_text_chunks = []
riff_info_list = []
[dev-dependencies]
criterion = { version = "0.3", features = ["html_reports"] }

View file

@ -29,20 +29,16 @@ pub enum LoftyError {
NotAPicture,
// Tag related errors
#[cfg(feature = "format-id3")]
#[cfg(feature = "id3")] // TODO
/// Any error from [`id3`]
#[error(transparent)]
Id3Tag(#[from] id3::Error),
#[cfg(feature = "format-mp4")]
#[cfg(feature = "mp4ameta")] // TODO
/// Any error from [`mp4ameta`]
#[error(transparent)]
Mp4Tag(#[from] mp4ameta::Error),
/// Errors that arrist while parsing OGG pages
#[cfg(any(
feature = "format-opus",
feature = "format-vorbis",
feature = "format-flac"
))]
/// Errors that arise while parsing OGG pages
#[cfg(feature = "vorbis_comments")]
#[error(transparent)]
OggPage(#[from] ogg_pager::PageError),
/// Errors that arise while reading/writing to WAV files

View file

@ -10,7 +10,7 @@
//!
//! | File Format | Extensions | Read | Write | Metadata Format(s) |
//! |-------------|-------------------------------------------|------|-------|----------------------------------------------------|
//! | Ape | `ape` |**X** |**X** |`APEv2`, `APEv1`, `ID3v2` (Not officially), `ID3v1` |
//! | APE | `ape` |**X** |**X** |`APEv2`, `APEv1`, `ID3v2` (Not officially), `ID3v1` |
//! | AIFF | `aiff`, `aif` |**X** |**X** |`ID3v2`, `Text Chunks` |
//! | FLAC | `flac` |**X** |**X** |`Vorbis Comments` |
//! | MP3 | `mp3` |**X** |**X** |`ID3v2`, `ID3v1`, `APEv2`, `APEv1` |
@ -78,14 +78,6 @@
//! assert_eq!(oggtag.artist(), Some("Foo artist"));
//! ```
//!
//! # Concrete types
//! * AiffTag (AIFF Text Chunks)
//! * ApeTag
//! * Id3v2Tag
//! * Mp4Tag
//! * OggTag
//! * RiffTag (RIFF LIST INFO)
//!
//! # Features
//!
//! ## Applies to all
@ -94,19 +86,13 @@
//! ## Individual formats
//! These features are available if you have a specific use case, or just don't want certain formats.
//!
//! All format features a prefixed with `format-`
//! * `format-ape`
//! * `format-flac`
//! * `format-id3`
//! * `format-mp4`
//! * `format-opus`
//! * `format-vorbis`
//! * `format-riff`
//!
//! ## Umbrella features
//! These cover all formats under a container format.
//!
//! * `format-ogg` (`format-opus`, `format-vorbis`, `format-flac`)
//! * `aiff_text_chunks`
//! * `ape`
//! * `id3v1`
//! * `id3v2`
//! * `mp4_atoms`
//! * `riff_info_list`
//! * `vorbis_comments`
#![deny(clippy::pedantic, clippy::all, missing_docs)]
#![allow(
@ -124,25 +110,42 @@
clippy::used_underscore_binding
)]
mod types;
pub use crate::error::{LoftyError, Result};
pub use crate::probe::Probe;
pub use crate::types::{
album::Album,
anytag::AnyTag,
file::{FileType, TaggedFile},
item::ItemKey,
picture::{MimeType, Picture, PictureType},
properties::FileProperties,
tag::{ItemValue, Tag, TagItem, TagType},
};
mod probe;
pub use crate::probe::Probe;
mod types;
/// Various concrete file types, used when inference is unnecessary
pub mod files {
pub use crate::logic::ape::ApeFile;
pub use crate::logic::iff::{aiff::AiffFile, wav::WavFile};
pub use crate::logic::mpeg::MpegFile;
pub use crate::logic::ogg::{flac::FlacFile, opus::OpusFile, vorbis::VorbisFile};
}
#[cfg(any(feature = "id3v1", feature = "id3v2"))]
/// ID3v1/v2 specific items
pub mod id3 {
pub use crate::logic::id3::v2::Id3v2Version;
}
/// Various items related to [`Picture`](crate::picture::Picture)s
pub mod picture {
pub use crate::types::picture::{
MimeType, Picture, PictureInformation, PictureType, TextEncoding,
};
}
mod error;
pub use crate::error::{LoftyError, Result};
mod components;
pub use crate::components::tags::*;
mod traits;
pub use crate::traits::{AudioTag, AudioTagEdit, AudioTagWrite, ToAny, ToAnyTag};
pub(crate) mod logic;
mod probe;