Skip to content

Commit 1893308

Browse files
committed
Tags: Make method names consistent
1 parent 83b26b3 commit 1893308

File tree

9 files changed

+194
-105
lines changed

9 files changed

+194
-105
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2020
- Keys will now be verified according to spec before insertion
2121
- Getters will now case-insensitively search for keys
2222
- `TRACKNUM` will now be considered in the `Accessor::*track` methods
23+
- **Tags**: Method names are more consistent
2324

2425
### Fixed
2526
- **ID3v2**:

src/ape/tag/mod.rs

Lines changed: 48 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ macro_rules! impl_accessor {
2323
$(
2424
fn $name(&self) -> Option<Cow<'_, str>> {
2525
$(
26-
if let Some(i) = self.get_key($key) {
26+
if let Some(i) = self.get($key) {
2727
if let ItemValue::Text(val) = i.value() {
2828
return Some(Cow::Borrowed(val));
2929
}
@@ -43,7 +43,7 @@ macro_rules! impl_accessor {
4343

4444
fn [<remove_ $name>](&mut self) {
4545
$(
46-
self.remove_key($key);
46+
self.remove($key);
4747
)+
4848
}
4949
)+
@@ -94,7 +94,21 @@ impl ApeTag {
9494
///
9595
/// NOTE: While `APE` items are supposed to be case-sensitive,
9696
/// this rule is rarely followed, so this will ignore case when searching.
97-
pub fn get_key(&self, key: &str) -> Option<&ApeItem> {
97+
///
98+
/// # Examples
99+
///
100+
/// ```rust
101+
/// use lofty::ape::ApeTag;
102+
/// use lofty::Accessor;
103+
///
104+
/// let mut ape_tag = ApeTag::new();
105+
/// ape_tag.set_title(String::from("Foo title"));
106+
///
107+
/// // Get the title by its key
108+
/// let title = ape_tag.get("Title");
109+
/// assert!(title.is_some());
110+
/// ```
111+
pub fn get(&self, key: &str) -> Option<&ApeItem> {
98112
self.items
99113
.iter()
100114
.find(|i| i.key().eq_ignore_ascii_case(key))
@@ -104,22 +118,42 @@ impl ApeTag {
104118
///
105119
/// This will remove any item with the same key prior to insertion
106120
pub fn insert(&mut self, value: ApeItem) {
107-
self.remove_key(value.key());
121+
self.remove(value.key());
108122
self.items.push(value);
109123
}
110124

111125
/// Remove an [`ApeItem`] by key
112126
///
113-
/// NOTE: Like [`ApeTag::get_key`], this is not case-sensitive
114-
pub fn remove_key(&mut self, key: &str) {
127+
/// NOTE: Like [`ApeTag::get`], this is not case-sensitive
128+
///
129+
/// # Examples
130+
///
131+
/// ```rust
132+
/// use lofty::ape::ApeTag;
133+
/// use lofty::Accessor;
134+
///
135+
/// let mut ape_tag = ApeTag::new();
136+
/// ape_tag.set_title(String::from("Foo title"));
137+
///
138+
/// // Get the title by its key
139+
/// let title = ape_tag.get("Title");
140+
/// assert!(title.is_some());
141+
///
142+
/// // Remove the title
143+
/// ape_tag.remove("Title");
144+
///
145+
/// let title = ape_tag.get("Title");
146+
/// assert!(title.is_none());
147+
/// ```
148+
pub fn remove(&mut self, key: &str) {
115149
self.items.retain(|i| !i.key().eq_ignore_ascii_case(key));
116150
}
117151

118152
fn split_num_pair(&self, key: &str) -> (Option<u32>, Option<u32>) {
119153
if let Some(ApeItem {
120154
value: ItemValue::Text(ref text),
121155
..
122-
}) = self.get_key(key)
156+
}) = self.get(key)
123157
{
124158
let mut split = text.split('/').flat_map(str::parse::<u32>);
125159
return (split.next(), split.next());
@@ -165,7 +199,7 @@ impl Accessor for ApeTag {
165199
}
166200

167201
fn remove_track(&mut self) {
168-
self.remove_key("Track");
202+
self.remove("Track");
169203
}
170204

171205
fn track_total(&self) -> Option<u32> {
@@ -180,7 +214,7 @@ impl Accessor for ApeTag {
180214

181215
fn remove_track_total(&mut self) {
182216
let existing_track_number = self.track();
183-
self.remove_key("Track");
217+
self.remove("Track");
184218

185219
if let Some(track) = existing_track_number {
186220
self.insert(ApeItem::text("Track", track.to_string()));
@@ -196,7 +230,7 @@ impl Accessor for ApeTag {
196230
}
197231

198232
fn remove_disk(&mut self) {
199-
self.remove_key("Disc");
233+
self.remove("Disc");
200234
}
201235

202236
fn disk_total(&self) -> Option<u32> {
@@ -211,7 +245,7 @@ impl Accessor for ApeTag {
211245

212246
fn remove_disk_total(&mut self) {
213247
let existing_track_number = self.track();
214-
self.remove_key("Disc");
248+
self.remove("Disc");
215249

216250
if let Some(track) = existing_track_number {
217251
self.insert(ApeItem::text("Disc", track.to_string()));
@@ -222,7 +256,7 @@ impl Accessor for ApeTag {
222256
if let Some(ApeItem {
223257
value: ItemValue::Text(ref text),
224258
..
225-
}) = self.get_key("Year")
259+
}) = self.get("Year")
226260
{
227261
return try_parse_year(text);
228262
}
@@ -235,7 +269,7 @@ impl Accessor for ApeTag {
235269
}
236270

237271
fn remove_year(&mut self) {
238-
self.remove_key("Year");
272+
self.remove("Year");
239273
}
240274
}
241275

@@ -577,7 +611,7 @@ mod tests {
577611
fn tag_to_ape() {
578612
fn verify_key(tag: &ApeTag, key: &str, expected_val: &str) {
579613
assert_eq!(
580-
tag.get_key(key).map(ApeItem::value),
614+
tag.get(key).map(ApeItem::value),
581615
Some(&ItemValue::Text(String::from(expected_val)))
582616
);
583617
}

src/id3/v2/tag.rs

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1243,7 +1243,7 @@ mod tests {
12431243
#[test]
12441244
fn tag_to_id3v2_popm() {
12451245
let mut tag = Tag::new(TagType::ID3v2);
1246-
tag.insert_item(TagItem::new(
1246+
tag.insert(TagItem::new(
12471247
ItemKey::Popularimeter,
12481248
ItemValue::Binary(vec![
12491249
b'f', b'o', b'o', b'@', b'b', b'a', b'r', b'.', b'c', b'o', b'm', 0, 196, 0, 0,
@@ -1535,15 +1535,15 @@ mod tests {
15351535
use crate::traits::Accessor;
15361536
let mut tag = Tag::new(TagType::ID3v2);
15371537

1538-
tag.push_item_unchecked(TagItem::new(
1538+
tag.push_unchecked(TagItem::new(
15391539
ItemKey::TrackArtist,
15401540
ItemValue::Text(String::from("foo")),
15411541
));
1542-
tag.push_item_unchecked(TagItem::new(
1542+
tag.push_unchecked(TagItem::new(
15431543
ItemKey::TrackArtist,
15441544
ItemValue::Text(String::from("bar")),
15451545
));
1546-
tag.push_item_unchecked(TagItem::new(
1546+
tag.push_unchecked(TagItem::new(
15471547
ItemKey::TrackArtist,
15481548
ItemValue::Text(String::from("baz")),
15491549
));
@@ -1590,53 +1590,53 @@ mod tests {
15901590
let mut tag = Tag::new(TagType::ID3v2);
15911591
// 1st: Multi-valued text frames
15921592
tag.insert_text(ItemKey::TrackArtist, "TrackArtist 1".to_owned());
1593-
tag.push_item(TagItem::new(
1593+
tag.push(TagItem::new(
15941594
ItemKey::TrackArtist,
15951595
ItemValue::Text("TrackArtist 2".to_owned()),
15961596
));
15971597
tag.insert_text(ItemKey::AlbumArtist, "AlbumArtist 1".to_owned());
1598-
tag.push_item(TagItem::new(
1598+
tag.push(TagItem::new(
15991599
ItemKey::AlbumArtist,
16001600
ItemValue::Text("AlbumArtist 2".to_owned()),
16011601
));
16021602
tag.insert_text(ItemKey::TrackTitle, "TrackTitle 1".to_owned());
1603-
tag.push_item(TagItem::new(
1603+
tag.push(TagItem::new(
16041604
ItemKey::TrackTitle,
16051605
ItemValue::Text("TrackTitle 2".to_owned()),
16061606
));
16071607
tag.insert_text(ItemKey::AlbumTitle, "AlbumTitle 1".to_owned());
1608-
tag.push_item(TagItem::new(
1608+
tag.push(TagItem::new(
16091609
ItemKey::AlbumTitle,
16101610
ItemValue::Text("AlbumTitle 2".to_owned()),
16111611
));
16121612
tag.insert_text(ItemKey::ContentGroup, "ContentGroup 1".to_owned());
1613-
tag.push_item(TagItem::new(
1613+
tag.push(TagItem::new(
16141614
ItemKey::ContentGroup,
16151615
ItemValue::Text("ContentGroup 2".to_owned()),
16161616
));
16171617
tag.insert_text(ItemKey::Genre, "Genre 1".to_owned());
1618-
tag.push_item(TagItem::new(
1618+
tag.push(TagItem::new(
16191619
ItemKey::Genre,
16201620
ItemValue::Text("Genre 2".to_owned()),
16211621
));
16221622
tag.insert_text(ItemKey::Mood, "Mood 1".to_owned());
1623-
tag.push_item(TagItem::new(
1623+
tag.push(TagItem::new(
16241624
ItemKey::Mood,
16251625
ItemValue::Text("Mood 2".to_owned()),
16261626
));
16271627
tag.insert_text(ItemKey::Composer, "Composer 1".to_owned());
1628-
tag.push_item(TagItem::new(
1628+
tag.push(TagItem::new(
16291629
ItemKey::Composer,
16301630
ItemValue::Text("Composer 2".to_owned()),
16311631
));
16321632
tag.insert_text(ItemKey::Conductor, "Conductor 1".to_owned());
1633-
tag.push_item(TagItem::new(
1633+
tag.push(TagItem::new(
16341634
ItemKey::Conductor,
16351635
ItemValue::Text("Conductor 2".to_owned()),
16361636
));
16371637
// 2nd: Multi-valued language frames
16381638
tag.insert_text(ItemKey::Comment, "Comment 1".to_owned());
1639-
tag.push_item(TagItem::new(
1639+
tag.push(TagItem::new(
16401640
ItemKey::Comment,
16411641
ItemValue::Text("Comment 2".to_owned()),
16421642
));
@@ -1909,7 +1909,7 @@ mod tests {
19091909

19101910
let mut tag = Tag::new(TagType::ID3v2);
19111911

1912-
tag.push_item(TagItem::new(
1912+
tag.push(TagItem::new(
19131913
ItemKey::TrackNumber,
19141914
ItemValue::Text(track_number.to_string()),
19151915
));
@@ -1927,7 +1927,7 @@ mod tests {
19271927

19281928
let mut tag = Tag::new(TagType::ID3v2);
19291929

1930-
tag.push_item(TagItem::new(
1930+
tag.push(TagItem::new(
19311931
ItemKey::TrackTotal,
19321932
ItemValue::Text(track_total.to_string()),
19331933
));
@@ -1946,12 +1946,12 @@ mod tests {
19461946

19471947
let mut tag = Tag::new(TagType::ID3v2);
19481948

1949-
tag.push_item(TagItem::new(
1949+
tag.push(TagItem::new(
19501950
ItemKey::TrackNumber,
19511951
ItemValue::Text(track_number.to_string()),
19521952
));
19531953

1954-
tag.push_item(TagItem::new(
1954+
tag.push(TagItem::new(
19551955
ItemKey::TrackTotal,
19561956
ItemValue::Text(track_total.to_string()),
19571957
));
@@ -1969,7 +1969,7 @@ mod tests {
19691969

19701970
let mut tag = Tag::new(TagType::ID3v2);
19711971

1972-
tag.push_item(TagItem::new(
1972+
tag.push(TagItem::new(
19731973
ItemKey::DiscNumber,
19741974
ItemValue::Text(disk_number.to_string()),
19751975
));
@@ -1987,7 +1987,7 @@ mod tests {
19871987

19881988
let mut tag = Tag::new(TagType::ID3v2);
19891989

1990-
tag.push_item(TagItem::new(
1990+
tag.push(TagItem::new(
19911991
ItemKey::DiscTotal,
19921992
ItemValue::Text(disk_total.to_string()),
19931993
));
@@ -2006,12 +2006,12 @@ mod tests {
20062006

20072007
let mut tag = Tag::new(TagType::ID3v2);
20082008

2009-
tag.push_item(TagItem::new(
2009+
tag.push(TagItem::new(
20102010
ItemKey::DiscNumber,
20112011
ItemValue::Text(disk_number.to_string()),
20122012
));
20132013

2014-
tag.push_item(TagItem::new(
2014+
tag.push(TagItem::new(
20152015
ItemKey::DiscTotal,
20162016
ItemValue::Text(disk_total.to_string()),
20172017
));

src/iff/aiff/tag.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -581,11 +581,11 @@ mod tests {
581581
tag.insert_text(ItemKey::TrackTitle, String::from("Foo title"));
582582
tag.insert_text(ItemKey::TrackArtist, String::from("Bar artist"));
583583
tag.insert_text(ItemKey::CopyrightMessage, String::from("Baz copyright"));
584-
tag.push_item_unchecked(TagItem::new(
584+
tag.push_unchecked(TagItem::new(
585585
ItemKey::Comment,
586586
ItemValue::Text(String::from("Qux annotation")),
587587
));
588-
tag.push_item_unchecked(TagItem::new(
588+
tag.push_unchecked(TagItem::new(
589589
ItemKey::Comment,
590590
ItemValue::Text(String::from("Quux annotation")),
591591
));

0 commit comments

Comments
 (0)