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}