lo_odf 0.1.0

ODF package serializers for text, spreadsheet, presentation, drawing, formula, and database documents
Documentation
use std::path::Path;

use lo_core::{FormulaDocument, Result};
use lo_math::to_mathml_string;

use crate::common::{content_root_attrs, package_document, MIME_ODF};

pub fn serialize_formula_document(document: &FormulaDocument) -> String {
    let mut xml = lo_core::XmlBuilder::new();
    xml.declaration();
    xml.open("office:document-content", &content_root_attrs());
    xml.empty("office:scripts", &[]);
    xml.empty("office:automatic-styles", &[]);
    xml.open("office:body", &[]);
    xml.open("office:math", &[]);
    xml.raw(&to_mathml_string(&document.root));
    xml.close();
    xml.close();
    xml.close();
    xml.finish()
}

pub fn save_formula_document(path: impl AsRef<Path>, document: &FormulaDocument) -> Result<()> {
    let content = serialize_formula_document(document);
    package_document(path, MIME_ODF, content, &document.meta, Vec::new())
}