use chrono::naive::NaiveDate;
#[derive(Clone)]
pub struct Citation {
pub title: Option<String>,
pub contributors: Option<Vec<Contributor>>,
pub date: Option<NaiveDate>,
pub accessed: Option<NaiveDate>,
pub isbn: Option<String>,
pub publisher: Option<String>,
pub city_published: Option<String>,
pub volume: Option<String>,
pub issue: Option<String>,
pub chapter: Option<String>,
pub pages: Option<(u32, Option<u32>)>,
pub url: Option<String>,
pub source: Option<String>,
pub number: Option<String>,
pub language: Option<String>,
pub edition: Option<String>,
pub doi: Option<String>,
}
#[derive(Clone)]
pub struct Contributor {
pub organization: bool,
pub last_name: Option<String>,
pub name: Option<String>,
pub middle_name: Option<String>,
pub suffix: Option<String>,
pub position: ContributorType,
}
#[derive(Clone, Debug, PartialEq)]
pub enum ContributorType {
Author,
Authority,
Editor,
Translator,
Reviewer,
Director,
Composer,
}