aboutsummaryrefslogtreecommitdiff
path: root/apps/cassiopeia/src/format/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'apps/cassiopeia/src/format/mod.rs')
-rw-r--r--apps/cassiopeia/src/format/mod.rs26
1 files changed, 24 insertions, 2 deletions
diff --git a/apps/cassiopeia/src/format/mod.rs b/apps/cassiopeia/src/format/mod.rs
index 766bb22be13e..beab2f7aac66 100644
--- a/apps/cassiopeia/src/format/mod.rs
+++ b/apps/cassiopeia/src/format/mod.rs
@@ -1,3 +1,25 @@
-//! cassiopeia file format handling
+//! cassiopeia file format
-pub(crate) mod lexer;
+mod lexer;
+mod parser;
+
+pub(crate) use lexer::{LineLexer, LineToken, Token};
+pub(crate) use parser::LineCfg;
+
+use crate::TimeFile;
+use std::{fs::File, io::Read};
+
+pub(crate) fn load_file(path: &str) {
+ let mut f = File::open(path).unwrap();
+ let mut content = String::new();
+ f.read_to_string(&mut content).unwrap();
+
+ let mut lines: Vec<String> = content.split("\n").map(|l| l.to_owned()).collect();
+
+ lines
+ .iter_mut()
+ .map(|line| lexer::lex(line))
+ .map(|lex| parser::parse(lex))
+ .filter(|line| line.valid())
+ .fold(TimeFile::default(), |file, line| file.append(line));
+}