Skip to main content

rgchart/
lib.rs

1use wasm_bindgen::prelude::*;
2
3pub mod errors;
4pub(crate) mod models;
5pub(crate) mod utils;
6
7#[macro_use]
8pub(crate) mod macros;
9
10mod parsers;
11mod writers;
12
13pub use models::common;
14pub use models::generic;
15pub use models::fluxis;
16pub use models::osu;
17pub use models::quaver;
18
19pub use generic::GenericManiaChart;
20pub use fluxis::FscFile;
21pub use osu::OsuFile;
22pub use quaver::QuaFile;
23pub use common::{GameMode, KeyType, Key};
24
25#[cfg(not(target_arch = "wasm32"))]
26pub mod parse {
27    use crate::parsers;
28    use crate::GenericManiaChart;
29    use std::error::Error;
30
31    #[inline]
32    pub fn from_osu_generic(raw_chart: &str) -> Result<GenericManiaChart, Box<dyn Error>> {
33        parsers::osu::from_osu_generic(raw_chart)
34    }
35
36    #[inline]
37    pub fn from_sm_generic(raw_chart: &str) -> Result<GenericManiaChart, Box<dyn Error>> {
38        parsers::stepmania::from_sm_generic(raw_chart)
39    }
40
41    #[inline]
42    pub fn from_qua_generic(raw_chart: &str) -> Result<GenericManiaChart, Box<dyn Error>> {
43        parsers::quaver::from_qua_generic(raw_chart)
44    }
45
46    #[inline]
47    pub fn from_fsc_generic(raw_chart: &str) -> Result<GenericManiaChart, Box<dyn Error>> {
48        parsers::fluxis::from_fsc_generic(raw_chart)
49    }
50}
51
52#[cfg(not(target_arch = "wasm32"))]
53pub mod write {
54    use crate::writers;
55    use crate::GenericManiaChart;
56    use std::error::Error;
57
58    #[inline]
59    pub fn to_osu_generic(chart: &GenericManiaChart) -> Result<String, Box<dyn Error>> {
60        writers::osu::to_osu_generic(chart)
61    }
62
63    #[inline]
64    pub fn to_sm_generic(chart: &GenericManiaChart) -> Result<String, Box<dyn Error>> {
65        writers::stepmania::to_sm_generic(chart)
66    }
67
68    #[inline]
69    pub fn to_qua_generic(chart: &GenericManiaChart) -> Result<String, Box<dyn Error>> {
70        writers::quaver::to_qua_generic(chart)
71    }
72
73    #[inline]
74    pub fn to_fsc_generic(chart: &GenericManiaChart) -> Result<String, Box<dyn Error>> {
75        writers::fluxis::to_fsc_generic(chart)
76    }
77}
78
79#[cfg(target_arch = "wasm32")]
80pub mod parse {
81    use wasm_bindgen::prelude::*;
82    use crate::parsers;
83    use crate::GenericManiaChart;
84
85    #[wasm_bindgen(js_name = parseFromOsuGeneric)]
86    pub fn parse_from_osu_generic(raw_chart: &str) -> Result<GenericManiaChart, JsError> {
87        parsers::osu::from_osu_generic(raw_chart)
88            .map_err(|e| JsError::new(&e.to_string()))
89    }
90
91    #[wasm_bindgen(js_name = parseFromSmGeneric)]
92    pub fn parse_from_sm_generic(raw_chart: &str) -> Result<GenericManiaChart, JsError> {
93        parsers::stepmania::from_sm_generic(raw_chart)
94            .map_err(|e| JsError::new(&e.to_string()))
95    }
96
97    #[wasm_bindgen(js_name = parseFromQuaGeneric)]
98    pub fn parse_from_qua_generic(raw_chart: &str) -> Result<GenericManiaChart, JsError> {
99        parsers::quaver::from_qua_generic(raw_chart)
100            .map_err(|e| JsError::new(&e.to_string()))
101    }
102
103    #[wasm_bindgen(js_name = parseFromFscGeneric)]
104    pub fn parse_from_fsc_generic(raw_chart: &str) -> Result<GenericManiaChart, JsError> {
105        parsers::fluxis::from_fsc_generic(raw_chart)
106            .map_err(|e| JsError::new(&e.to_string()))
107    }
108}
109
110#[cfg(target_arch = "wasm32")]
111pub mod write {
112    use wasm_bindgen::prelude::*;
113    use crate::writers;
114    use crate::GenericManiaChart;
115
116    #[wasm_bindgen(js_name = writeToOsuGeneric)]
117    pub fn write_to_osu_generic(chart: &GenericManiaChart) -> Result<String, JsError> {
118        writers::osu::to_osu_generic(chart)
119            .map_err(|e| JsError::new(&e.to_string()))
120    }
121
122    #[wasm_bindgen(js_name = writeToSmGeneric)]
123    pub fn write_to_sm_generic(chart: &GenericManiaChart) -> Result<String, JsError> {
124        writers::stepmania::to_sm_generic(chart)
125            .map_err(|e| JsError::new(&e.to_string()))
126    }
127
128    #[wasm_bindgen(js_name = writeToQuaGeneric)]
129    pub fn write_to_qua_generic(chart: &GenericManiaChart) -> Result<String, JsError> {
130        writers::quaver::to_qua_generic(chart)
131            .map_err(|e| JsError::new(&e.to_string()))
132    }
133
134    #[wasm_bindgen(js_name = writeToFscGeneric)]
135    pub fn write_to_fsc_generic(chart: &GenericManiaChart) -> Result<String, JsError> {
136        writers::fluxis::to_fsc_generic(chart)
137            .map_err(|e| JsError::new(&e.to_string()))
138    }
139}