Reorganize
This commit is contained in:
36
szlib/helper_procs.odin
Normal file
36
szlib/helper_procs.odin
Normal file
@@ -0,0 +1,36 @@
|
||||
package szlib
|
||||
|
||||
import sp "core:path/slashpath"
|
||||
import "core:crypto"
|
||||
import "core:encoding/uuid"
|
||||
import "core:os/os2"
|
||||
|
||||
get_data_directory :: proc() -> (result: string, error: os2.Error) {
|
||||
exe_dir, err := os2.get_executable_directory(context.allocator)
|
||||
if err != os2.General_Error.None {
|
||||
return "", error
|
||||
}
|
||||
|
||||
data_path := sp.join({exe_dir, "data"})
|
||||
if (!os2.is_directory(data_path))
|
||||
{
|
||||
mkdir_err := os2.make_directory(data_path)
|
||||
if mkdir_err != os2.General_Error.None
|
||||
{
|
||||
return "", mkdir_err
|
||||
}
|
||||
}
|
||||
|
||||
return data_path, os2.General_Error.None
|
||||
}
|
||||
|
||||
create_uuid :: proc() -> string {
|
||||
new_uuid: string
|
||||
|
||||
{
|
||||
context.random_generator = crypto.random_generator()
|
||||
new_uuid = uuid.to_string_allocated(uuid.generate_v7())
|
||||
}
|
||||
|
||||
return new_uuid
|
||||
}
|
||||
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
|
||||
}
|
||||
38
szlib/tests.odin
Normal file
38
szlib/tests.odin
Normal file
@@ -0,0 +1,38 @@
|
||||
package szlib
|
||||
|
||||
create_test_dataset :: proc() -> Dataset {
|
||||
|
||||
test_dataset: Dataset = {
|
||||
name = "Test Dataset",
|
||||
id = "test_dataset",
|
||||
uuid = create_uuid(),
|
||||
data_object_type = "items",
|
||||
objects = make([dynamic]SzDataObject)
|
||||
}
|
||||
|
||||
test_dataset_object: SzDataObject = {
|
||||
id = "test-item",
|
||||
name = "Test Item",
|
||||
fields = make([dynamic]SzField)
|
||||
}
|
||||
|
||||
test_field: SzField = {
|
||||
id = "cost",
|
||||
type = .NUMBER,
|
||||
is_list = false,
|
||||
value = "100"
|
||||
}
|
||||
|
||||
test_field2: SzField = {
|
||||
id = "some_string",
|
||||
type = .TEXT,
|
||||
is_list = false,
|
||||
value = "This is some text"
|
||||
}
|
||||
|
||||
append(&test_dataset_object.fields, test_field)
|
||||
append(&test_dataset_object.fields, test_field2)
|
||||
append(&test_dataset.objects, test_dataset_object)
|
||||
|
||||
return test_dataset
|
||||
}
|
||||
Reference in New Issue
Block a user