Reorganize
This commit is contained in:
53
szlib/sz_parser.odin
Normal file
53
szlib/sz_parser.odin
Normal file
@@ -0,0 +1,53 @@
|
||||
package szlib
|
||||
|
||||
import "core:encoding/json"
|
||||
import "core:fmt"
|
||||
import "core:os"
|
||||
|
||||
|
||||
write_dataset_to_json :: proc(dataset: Dataset, json_path: string) -> (ok: bool) {
|
||||
|
||||
json_data, err := json.marshal(dataset, {pretty = true, use_enum_names = true})
|
||||
if err != nil {
|
||||
fmt.eprintfln("Unable to marshal JSON: %v", err)
|
||||
return false
|
||||
}
|
||||
|
||||
werr := os.write_entire_file_or_err(json_path, json_data)
|
||||
if werr != nil {
|
||||
fmt.eprintfln("Unable to write JSON: %v", err)
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
|
||||
parse_json_to_dataset :: proc(json_path: string) -> (result: Dataset, ok: bool) {
|
||||
dataset: Dataset
|
||||
|
||||
data, data_ok := os.read_entire_file_from_filename(json_path)
|
||||
if !data_ok {
|
||||
fmt.eprintln("Failed to load the file")
|
||||
return dataset, false
|
||||
}
|
||||
defer delete(data)
|
||||
|
||||
json_data, err := json.parse(data)
|
||||
if err != .None {
|
||||
fmt.eprintln("Failed to parse JSON file.")
|
||||
fmt.eprintln("Error: ", err)
|
||||
return dataset, false
|
||||
}
|
||||
defer json.destroy_value(json_data)
|
||||
|
||||
root := json_data.(json.Object)
|
||||
|
||||
error := json.unmarshal(data, &dataset)
|
||||
if error != nil {
|
||||
fmt.eprintln("Could not unmarshal json data to Dataset:", error)
|
||||
return dataset, false
|
||||
}
|
||||
|
||||
return dataset, true
|
||||
}
|
||||
Reference in New Issue
Block a user