rss/extension/
dublincore.rs1use std::collections::HashMap;
2
3use extension::Extension;
4use extension::remove_extension_values;
5
6#[derive(Debug, Default, Clone, PartialEq)]
8pub struct DublinCoreExtension {
9 pub contributor: Option<Vec<String>>,
11 pub coverage: Option<Vec<String>>,
14 pub creator: Option<Vec<String>>,
16 pub date: Option<Vec<String>>,
18 pub description: Option<Vec<String>>,
20 pub format: Option<Vec<String>>,
22 pub identifier: Option<Vec<String>>,
24 pub language: Option<Vec<String>>,
26 pub publisher: Option<Vec<String>>,
28 pub relation: Option<Vec<String>>,
30 pub rights: Option<Vec<String>>,
32 pub source: Option<Vec<String>>,
34 pub subject: Option<Vec<String>>,
36 pub title: Option<Vec<String>>,
38 pub resource_type: Option<Vec<String>>,
40}
41
42impl DublinCoreExtension {
43 pub fn from_map(mut map: HashMap<String, Vec<Extension>>) -> Self {
45 let mut ext = DublinCoreExtension::default();
46 ext.contributor = remove_extension_values(&mut map, "contributor");
47 ext.coverage = remove_extension_values(&mut map, "coverage");
48 ext.creator = remove_extension_values(&mut map, "creator");
49 ext.date = remove_extension_values(&mut map, "date");
50 ext.description = remove_extension_values(&mut map, "description");
51 ext.format = remove_extension_values(&mut map, "format");
52 ext.identifier = remove_extension_values(&mut map, "identifier");
53 ext.language = remove_extension_values(&mut map, "language");
54 ext.publisher = remove_extension_values(&mut map, "publisher");
55 ext.relation = remove_extension_values(&mut map, "relation");
56 ext.rights = remove_extension_values(&mut map, "rights");
57 ext.source = remove_extension_values(&mut map, "source");
58 ext.subject = remove_extension_values(&mut map, "subject");
59 ext.title = remove_extension_values(&mut map, "title");
60 ext.resource_type = remove_extension_values(&mut map, "type");
61 ext
62 }
63}