From 541dc3b929117b1f7670e11fce37c9ea08b8c398 Mon Sep 17 00:00:00 2001 From: veradec Date: Mon, 7 Sep 2026 13:07:48 +0530 Subject: add: matches value and enumerates accordingly --- src/main.rs | 39 ++++++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index 2752f9f..0cbc919 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,25 +3,25 @@ use log::{debug, error, info, trace, warn}; use std::fs; use regex::Regex; - +#[derive(Debug)] enum OkmlType { String(String), Boolean(bool), Integer(i64), - Null(*const i32), + Float(f64), + Null, } - +#[derive(Debug)] enum OkmlValue { Value(OkmlType), SubList(Vec), } - +#[derive(Debug)] struct Okml { key: String, value: OkmlValue, } - fn load_from_file(file_path: &str) { let extension = &file_path[file_path.len()-4..file_path.len()]; @@ -38,7 +38,7 @@ fn load_from_file(file_path: &str) { let tokens: Vec<&str> = re.split(&content).filter(|s| !s.is_empty()).collect(); let token_len = tokens.len(); - let parent: Vec = Default::default(); + let mut parent: Vec = Default::default(); let count_braces: u64 = 0; for (mut index) in 0..token_len { @@ -63,16 +63,41 @@ fn load_from_file(file_path: &str) { result.push_str(" "); } - + parent.push(Okml{ + key: current.to_string(), + value: OkmlValue::Value(OkmlType::String(result.clone())) + }); info!("{} => {}", current, result); } else { + let mut return_value: OkmlType; + match value { + &"true" | &"yes" => return_value = OkmlType::Boolean(true), + &"false" | &"no" => return_value = OkmlType::Boolean(false), + &"null" => return_value = OkmlType::Null, + &&_ => { + if let Ok(parsed) = value.parse::() { + return_value = OkmlType::Integer(parsed); + } else if let Ok(parsed) = value.parse::() { + return_value = OkmlType::Float(parsed); + } else { + return_value = OkmlType::String(value.to_string()); + } + } + } + // match value + parent.push(Okml{ + key: current.to_string(), + value: OkmlValue::Value(return_value) + }); info!("{} => {}", current, value); } } else { // info!("{}", current); } } + + println!("{:#?}", parent); } -- cgit v1.2.3