mod core;
mod elements;
mod text;
mod spreadsheet;
mod presentation;
pub use text::Document;
pub use spreadsheet::Spreadsheet;
pub use presentation::Presentation;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum OdfFormat {
Text,
Spreadsheet,
Presentation,
Drawing,
Formula,
Chart,
Image,
Master,
}
pub const ODF_MIME_TYPES: &[(&str, OdfFormat)] = &[
("application/vnd.oasis.opendocument.text", OdfFormat::Text),
("application/vnd.oasis.opendocument.spreadsheet", OdfFormat::Spreadsheet),
("application/vnd.oasis.opendocument.presentation", OdfFormat::Presentation),
("application/vnd.oasis.opendocument.graphics", OdfFormat::Drawing),
("application/vnd.oasis.opendocument.formula", OdfFormat::Formula),
("application/vnd.oasis.opendocument.chart", OdfFormat::Chart),
("application/vnd.oasis.opendocument.image", OdfFormat::Image),
("application/vnd.oasis.opendocument.text-master", OdfFormat::Master),
("application/vnd.oasis.opendocument.text-template", OdfFormat::Text),
("application/vnd.oasis.opendocument.spreadsheet-template", OdfFormat::Spreadsheet),
("application/vnd.oasis.opendocument.presentation-template", OdfFormat::Presentation),
("application/vnd.oasis.opendocument.graphics-template", OdfFormat::Drawing),
("application/vnd.oasis.opendocument.formula-template", OdfFormat::Formula),
("application/vnd.oasis.opendocument.chart-template", OdfFormat::Chart),
("application/vnd.oasis.opendocument.image-template", OdfFormat::Image),
];
pub fn detect_format_from_mime(mime_type: &str) -> Option<OdfFormat> {
ODF_MIME_TYPES
.iter()
.find(|(mime, _)| *mime == mime_type)
.map(|(_, format)| *format)
}