From 0895fe1b9369ead6e7c1f89e48be67ada738aa24 Mon Sep 17 00:00:00 2001 From: veradec Date: Sun, 6 Sep 2026 14:52:35 +0530 Subject: add: parsing through the key: value pairs --- src/main.rs | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 80 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/main.rs b/src/main.rs index e7a11a9..73eb56b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,82 @@ +#![allow(unused)] +use log::{debug, error, info, trace, warn}; +use std::fs; +use regex::Regex; + + +enum OkmlType { + String(String), + Boolean(bool), + Integer(i64), + Null(*const i32), +} + + +struct Okml { + key: String, + value: OkmlType, + // sub_list: Vec, +} + + +fn load_from_file(file_path: &str) { + let extension = &file_path[file_path.len()-4..file_path.len()]; + + if extension != "okml" { + error!("File is not in .okml {extension}"); + std::process::exit(-1); + } + info!("File: {}", file_path); + + let content = fs::read_to_string(file_path) + .expect("Should've read the file"); + + let re = Regex::new(r"[ \t\n]+").unwrap(); + let tokens: Vec<&str> = re.split(&content).filter(|s| !s.is_empty()).collect(); + let token_len = tokens.len(); + + let parent: Vec = Default::default(); + let count_braces: u64 = 0; + + for (mut index) in 0..token_len { + // parse (sub_list_key { ) + + + + // parse (key: value) || (key : value) + let current = tokens.get(index).unwrap(); + if let Some(':') = current.chars().last() { + let mut value = tokens.get(index+1).unwrap(); + if value == &"```" { + let mut _current: &str; + let mut result: String = Default::default(); + while index < token_len{ + index = index+1; + _current = tokens.get(index+1).unwrap(); + if _current == "```" { + break; + } + result.push_str(_current); + result.push_str(" "); + } + + + info!("{} => {}", current, result); + } else { + + info!("{} => {}", current, value); + } + } else { + // info!("{}", current); + } + } + +} + fn main() { - println!("Hello, world!"); + env_logger::init(); + + let args: Vec = std::env::args().collect(); + let file_path = &args[1]; + load_from_file(file_path); } -- cgit v1.2.3