pub mod error;
pub mod model;
pub mod parser;
pub mod types;
pub mod xform;
pub mod xls;
pub mod xmlwriter;
pub use error::{Error, Result};
use std::path::Path;
pub struct Conversion {
pub xml: String,
pub itemsets_csv: Option<String>,
}
pub fn convert_file(path: &Path) -> Result<String> {
Ok(convert(path)?.xml)
}
pub fn convert(path: &Path) -> Result<Conversion> {
let workbook = xls::read_workbook(path)?;
let fallback = path
.file_stem()
.and_then(|s| s.to_str())
.unwrap_or("data")
.to_string();
convert_workbook_full(&workbook, &fallback)
}
pub fn convert_workbook(workbook: &xls::Workbook, fallback_name: &str) -> Result<String> {
Ok(convert_workbook_full(workbook, fallback_name)?.xml)
}
pub fn convert_workbook_full(workbook: &xls::Workbook, fallback_name: &str) -> Result<Conversion> {
let survey = parser::parse(workbook, fallback_name)?;
let xml = xform::generate(&survey)?;
Ok(Conversion {
xml,
itemsets_csv: xform::itemsets_csv(&survey),
})
}