Skip to content

Commit 3f5d2be

Browse files
committed
Fmt
1 parent eeea82a commit 3f5d2be

File tree

3 files changed

+152
-118
lines changed

3 files changed

+152
-118
lines changed

readap-wasm/src/lib.rs

Lines changed: 68 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
1-
mod utils;
21
mod url_builder;
2+
mod utils;
33

4-
use wasm_bindgen::prelude::*;
5-
use readap::{DdsDataset, DodsDataset, DasAttribute, parse_das_attributes};
6-
use readap::data::{DataType, DataValue};
74
use js_sys::{Array, Object, Reflect};
5+
use readap::data::{DataType, DataValue};
6+
use readap::{parse_das_attributes, DasAttribute, DdsDataset, DodsDataset};
7+
use wasm_bindgen::prelude::*;
88

99
pub use url_builder::UrlBuilder;
1010

1111
#[wasm_bindgen]
1212
pub fn parse_dds(content: &str) -> Result<JsValue, JsValue> {
1313
utils::set_panic_hook();
14-
14+
1515
match DdsDataset::from_bytes(content) {
1616
Ok(dataset) => {
1717
let obj = Object::new();
18-
18+
1919
// Set dataset name
2020
Reflect::set(&obj, &"name".into(), &JsValue::from_str(&dataset.name))
2121
.map_err(|_| JsValue::from_str("Failed to set name"))?;
22-
22+
2323
// Convert variables
2424
let vars_array = Array::new();
2525
for value in &dataset.values {
@@ -28,36 +28,36 @@ pub fn parse_dds(content: &str) -> Result<JsValue, JsValue> {
2828
}
2929
Reflect::set(&obj, &"values".into(), &vars_array)
3030
.map_err(|_| JsValue::from_str("Failed to set values"))?;
31-
31+
3232
// Add utility methods as properties
3333
let variables = Array::new();
3434
for var_name in dataset.list_variables() {
3535
variables.push(&JsValue::from_str(&var_name));
3636
}
3737
Reflect::set(&obj, &"variables".into(), &variables)
3838
.map_err(|_| JsValue::from_str("Failed to set variables list"))?;
39-
39+
4040
let coordinates = Array::new();
4141
for coord_name in dataset.list_coordinates() {
4242
coordinates.push(&JsValue::from_str(&coord_name));
4343
}
4444
Reflect::set(&obj, &"coordinates".into(), &coordinates)
4545
.map_err(|_| JsValue::from_str("Failed to set coordinates list"))?;
46-
46+
4747
Ok(obj.into())
4848
}
49-
Err(e) => Err(JsValue::from_str(&format!("Parse error: {}", e)))
49+
Err(e) => Err(JsValue::from_str(&format!("Parse error: {}", e))),
5050
}
5151
}
5252

5353
#[wasm_bindgen]
5454
pub fn parse_das(content: &str) -> Result<JsValue, JsValue> {
5555
utils::set_panic_hook();
56-
56+
5757
match parse_das_attributes(content) {
5858
Ok(attributes) => {
5959
let obj = Object::new();
60-
60+
6161
for (var_name, var_attrs) in attributes {
6262
let var_obj = Object::new();
6363
for (attr_name, attr) in var_attrs {
@@ -68,129 +68,149 @@ pub fn parse_das(content: &str) -> Result<JsValue, JsValue> {
6868
Reflect::set(&obj, &JsValue::from_str(&var_name), &var_obj)
6969
.map_err(|_| JsValue::from_str("Failed to set variable"))?;
7070
}
71-
71+
7272
Ok(obj.into())
7373
}
74-
Err(e) => Err(JsValue::from_str(&format!("Parse error: {}", e)))
74+
Err(e) => Err(JsValue::from_str(&format!("Parse error: {}", e))),
7575
}
7676
}
7777

7878
#[wasm_bindgen]
7979
pub fn parse_dods(bytes: &[u8]) -> Result<JsValue, JsValue> {
8080
utils::set_panic_hook();
81-
81+
8282
match DodsDataset::from_bytes(bytes) {
8383
Ok(dods) => {
8484
let obj = Object::new();
85-
85+
8686
// Set dataset
8787
let dataset_obj = parse_dds(&format!("{:?}", dods.dds))?; // This is a placeholder - would need proper DDS serialization
8888
Reflect::set(&obj, &"dataset".into(), &dataset_obj)
8989
.map_err(|_| JsValue::from_str("Failed to set dataset"))?;
90-
90+
9191
// Set variables list
9292
let variables = Array::new();
9393
for var_name in dods.variables() {
9494
variables.push(&JsValue::from_str(&var_name));
9595
}
9696
Reflect::set(&obj, &"variables".into(), &variables)
9797
.map_err(|_| JsValue::from_str("Failed to set variables"))?;
98-
98+
9999
Ok(obj.into())
100100
}
101-
Err(e) => Err(JsValue::from_str(&format!("Parse error: {}", e)))
101+
Err(e) => Err(JsValue::from_str(&format!("Parse error: {}", e))),
102102
}
103103
}
104104

105105
// Helper functions
106106
fn dds_value_to_js(value: &readap::DdsValue) -> Result<JsValue, JsValue> {
107107
let obj = Object::new();
108-
108+
109109
Reflect::set(&obj, &"name".into(), &JsValue::from_str(&value.name()))
110110
.map_err(|_| JsValue::from_str("Failed to set value name"))?;
111-
111+
112112
match value {
113113
readap::DdsValue::Array(array) => {
114114
Reflect::set(&obj, &"type".into(), &JsValue::from_str("Array"))
115115
.map_err(|_| JsValue::from_str("Failed to set type"))?;
116-
117-
Reflect::set(&obj, &"dataType".into(), &JsValue::from_str(&data_type_to_string(&array.data_type)))
118-
.map_err(|_| JsValue::from_str("Failed to set data type"))?;
119-
116+
117+
Reflect::set(
118+
&obj,
119+
&"dataType".into(),
120+
&JsValue::from_str(&data_type_to_string(&array.data_type)),
121+
)
122+
.map_err(|_| JsValue::from_str("Failed to set data type"))?;
123+
120124
let coords_array = Array::new();
121125
for (coord_name, coord_size) in &array.coords {
122126
let coord_obj = Object::new();
123127
Reflect::set(&coord_obj, &"name".into(), &JsValue::from_str(coord_name))
124128
.map_err(|_| JsValue::from_str("Failed to set coord name"))?;
125-
Reflect::set(&coord_obj, &"size".into(), &JsValue::from_f64(*coord_size as f64))
126-
.map_err(|_| JsValue::from_str("Failed to set coord size"))?;
129+
Reflect::set(
130+
&coord_obj,
131+
&"size".into(),
132+
&JsValue::from_f64(*coord_size as f64),
133+
)
134+
.map_err(|_| JsValue::from_str("Failed to set coord size"))?;
127135
coords_array.push(&coord_obj);
128136
}
129137
Reflect::set(&obj, &"coordinates".into(), &coords_array)
130138
.map_err(|_| JsValue::from_str("Failed to set coordinates"))?;
131-
},
139+
}
132140
readap::DdsValue::Grid(grid) => {
133141
Reflect::set(&obj, &"type".into(), &JsValue::from_str("Grid"))
134142
.map_err(|_| JsValue::from_str("Failed to set type"))?;
135-
136-
Reflect::set(&obj, &"dataType".into(), &JsValue::from_str(&data_type_to_string(&grid.array.data_type)))
137-
.map_err(|_| JsValue::from_str("Failed to set data type"))?;
138-
143+
144+
Reflect::set(
145+
&obj,
146+
&"dataType".into(),
147+
&JsValue::from_str(&data_type_to_string(&grid.array.data_type)),
148+
)
149+
.map_err(|_| JsValue::from_str("Failed to set data type"))?;
150+
139151
let coords_array = Array::new();
140152
for coord in &grid.coords {
141153
let coord_obj = Object::new();
142154
Reflect::set(&coord_obj, &"name".into(), &JsValue::from_str(&coord.name))
143155
.map_err(|_| JsValue::from_str("Failed to set coord name"))?;
144-
Reflect::set(&coord_obj, &"size".into(), &JsValue::from_f64(coord.array_length() as f64))
145-
.map_err(|_| JsValue::from_str("Failed to set coord size"))?;
156+
Reflect::set(
157+
&coord_obj,
158+
&"size".into(),
159+
&JsValue::from_f64(coord.array_length() as f64),
160+
)
161+
.map_err(|_| JsValue::from_str("Failed to set coord size"))?;
146162
coords_array.push(&coord_obj);
147163
}
148164
Reflect::set(&obj, &"coordinates".into(), &coords_array)
149165
.map_err(|_| JsValue::from_str("Failed to set coordinates"))?;
150-
},
166+
}
151167
readap::DdsValue::Structure(structure) => {
152168
Reflect::set(&obj, &"type".into(), &JsValue::from_str("Structure"))
153169
.map_err(|_| JsValue::from_str("Failed to set type"))?;
154-
170+
155171
let fields_array = Array::new();
156172
for field in &structure.fields {
157173
let field_obj = dds_value_to_js(field)?;
158174
fields_array.push(&field_obj);
159175
}
160176
Reflect::set(&obj, &"fields".into(), &fields_array)
161177
.map_err(|_| JsValue::from_str("Failed to set fields"))?;
162-
},
178+
}
163179
readap::DdsValue::Sequence(sequence) => {
164180
Reflect::set(&obj, &"type".into(), &JsValue::from_str("Sequence"))
165181
.map_err(|_| JsValue::from_str("Failed to set type"))?;
166-
182+
167183
let fields_array = Array::new();
168184
for field in &sequence.fields {
169185
let field_obj = dds_value_to_js(field)?;
170186
fields_array.push(&field_obj);
171187
}
172188
Reflect::set(&obj, &"fields".into(), &fields_array)
173189
.map_err(|_| JsValue::from_str("Failed to set fields"))?;
174-
},
190+
}
175191
}
176-
192+
177193
Ok(obj.into())
178194
}
179195

180196
fn das_attribute_to_js(attr: &DasAttribute) -> Result<JsValue, JsValue> {
181197
let obj = Object::new();
182-
198+
183199
Reflect::set(&obj, &"name".into(), &JsValue::from_str(&attr.name))
184200
.map_err(|_| JsValue::from_str("Failed to set attribute name"))?;
185-
186-
Reflect::set(&obj, &"dataType".into(), &JsValue::from_str(&data_type_to_string(&attr.data_type)))
187-
.map_err(|_| JsValue::from_str("Failed to set attribute data type"))?;
188-
201+
202+
Reflect::set(
203+
&obj,
204+
&"dataType".into(),
205+
&JsValue::from_str(&data_type_to_string(&attr.data_type)),
206+
)
207+
.map_err(|_| JsValue::from_str("Failed to set attribute data type"))?;
208+
189209
// Set the actual value
190210
let value = data_value_to_js(&attr.value)?;
191211
Reflect::set(&obj, &"value".into(), &value)
192212
.map_err(|_| JsValue::from_str("Failed to set attribute value"))?;
193-
213+
194214
Ok(obj.into())
195215
}
196216

@@ -221,4 +241,4 @@ fn data_type_to_string(data_type: &DataType) -> String {
221241
DataType::String => "String".to_string(),
222242
DataType::URL => "URL".to_string(),
223243
}
224-
}
244+
}

0 commit comments

Comments
 (0)