gldf_rs_python/
lib.rs

1
2use pyo3::prelude::*;
3use gldf_rs::gldf::{GldfProduct};
4use std::path::Path;
5
6#[pyfunction]
7fn gldf_to_xml(path: &str) -> PyResult<String> {
8    let loaded: GldfProduct = GldfProduct::load_gldf(path).unwrap();
9    Ok(loaded.to_xml().unwrap())
10}
11
12#[pyfunction]
13fn gldf_to_json(path: &str) -> PyResult<String> {
14    let loaded: GldfProduct = GldfProduct::load_gldf(path).unwrap();
15    Ok(loaded.to_json().unwrap())
16}
17
18#[pyfunction]
19fn json_from_xml_str(xml_str: &str) -> PyResult<String> {
20    let loaded: GldfProduct = GldfProduct::from_xml(&xml_str.to_string()).unwrap();
21    Ok(loaded.to_json().unwrap())
22}
23
24#[pyfunction]
25fn xml_from_json(json_str: &str) -> PyResult<String> {
26    let loaded: GldfProduct = GldfProduct::from_json(json_str).unwrap();
27    Ok(loaded.to_xml().unwrap())
28}
29
30// #[pyfunction]
31// fn gldf_product(path: &str) -> PyResult<GldfProduct> {
32//     let loaded: GldfProduct = GldfProduct::from_json(json_str).unwrap();
33//     Ok(loaded.to_xml().unwrap())
34// }
35
36/// A Python module implemented in Rust.
37#[pymodule]
38fn gldf_rs_python(_py: Python, m: &PyModule) -> PyResult<()> {
39    m.add_function(wrap_pyfunction!(gldf_to_xml, m)?)?;
40    m.add_function(wrap_pyfunction!(gldf_to_json, m)?)?;
41    m.add_function(wrap_pyfunction!(xml_from_json, m)?)?;
42    m.add_function(wrap_pyfunction!(json_from_xml_str, m)?)?;
43    Ok(())
44}