Skip to content

Commit cdd7511

Browse files
committed
cleanup
1 parent b811988 commit cdd7511

File tree

2 files changed

+20
-14
lines changed

2 files changed

+20
-14
lines changed

src/jpeg.rs

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use crate::reader::ReadUtils;
22
use crate::reader::read_iptc_data;
33
use crate::tags;
4+
use crate::tags::TagsMap;
45

56
use std::collections::HashMap;
67
use std::error::Error;
@@ -220,18 +221,7 @@ impl JPEGReader {
220221
}
221222

222223
fn get_record_dataset(tag: &IPTCTag) -> Option<(u8, u8)> {
223-
match tag {
224-
IPTCTag::City => Some((2, 90)),
225-
IPTCTag::Keywords => Some((2, 25)),
226-
IPTCTag::ByLine => Some((2, 80)),
227-
IPTCTag::Caption => Some((2, 120)),
228-
IPTCTag::CopyrightNotice => Some((2, 116)),
229-
IPTCTag::Credit => Some((2, 110)),
230-
IPTCTag::Headline => Some((2, 105)),
231-
IPTCTag::ObjectName => Some((2, 5)),
232-
IPTCTag::Source => Some((2, 115)),
233-
IPTCTag::Urgency => Some((2, 10)),
234-
_ => None,
235-
}
224+
let tags_map = TagsMap::new();
225+
tags_map.get_record_dataset(tag)
236226
}
237227
}

src/tags.rs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ pub(crate) type TagBlock = (IPTCTag, bool, ParseFn);
8282

8383
pub(crate) struct TagsMap {
8484
map: HashMap<String, TagBlock>,
85+
reverse_map: HashMap<IPTCTag, (u8, u8)>,
8586
}
8687

8788
fn default_parse(s: String) -> String {
@@ -202,10 +203,25 @@ impl TagsMap {
202203
.map(|(k, v)| (k.to_string(), v))
203204
.collect();
204205

205-
TagsMap { map }
206+
// Create reverse map from tag to (record,dataset)
207+
let reverse_map = map
208+
.iter()
209+
.map(|(k, &(tag, _, _))| {
210+
let parts: Vec<&str> = k.split(':').collect();
211+
let record = parts[0].parse::<u8>().unwrap();
212+
let dataset = parts[1].parse::<u8>().unwrap();
213+
(tag, (record, dataset))
214+
})
215+
.collect();
216+
217+
TagsMap { map, reverse_map }
206218
}
207219

208220
pub(crate) fn get(&self, tag: String) -> Option<TagBlock> {
209221
self.map.get(&tag).copied()
210222
}
223+
224+
pub(crate) fn get_record_dataset(&self, tag: &IPTCTag) -> Option<(u8, u8)> {
225+
self.reverse_map.get(tag).copied()
226+
}
211227
}

0 commit comments

Comments
 (0)