use std::collections::HashMap;
use extension::Extension;
use extension::remove_extension_values;
#[derive(Debug, Default, Clone, PartialEq)]
pub struct DublinCoreExtension {
pub contributor: Option<Vec<String>>,
pub coverage: Option<Vec<String>>,
pub creator: Option<Vec<String>>,
pub date: Option<Vec<String>>,
pub description: Option<Vec<String>>,
pub format: Option<Vec<String>>,
pub identifier: Option<Vec<String>>,
pub language: Option<Vec<String>>,
pub publisher: Option<Vec<String>>,
pub relation: Option<Vec<String>>,
pub rights: Option<Vec<String>>,
pub source: Option<Vec<String>>,
pub subject: Option<Vec<String>>,
pub title: Option<Vec<String>>,
pub resource_type: Option<Vec<String>>,
}
impl DublinCoreExtension {
pub fn from_map(mut map: HashMap<String, Vec<Extension>>) -> Self {
let mut ext = DublinCoreExtension::default();
ext.contributor = remove_extension_values(&mut map, "contributor");
ext.coverage = remove_extension_values(&mut map, "coverage");
ext.creator = remove_extension_values(&mut map, "creator");
ext.date = remove_extension_values(&mut map, "date");
ext.description = remove_extension_values(&mut map, "description");
ext.format = remove_extension_values(&mut map, "format");
ext.identifier = remove_extension_values(&mut map, "identifier");
ext.language = remove_extension_values(&mut map, "language");
ext.publisher = remove_extension_values(&mut map, "publisher");
ext.relation = remove_extension_values(&mut map, "relation");
ext.rights = remove_extension_values(&mut map, "rights");
ext.source = remove_extension_values(&mut map, "source");
ext.subject = remove_extension_values(&mut map, "subject");
ext.title = remove_extension_values(&mut map, "title");
ext.resource_type = remove_extension_values(&mut map, "type");
ext
}
}