summaryrefslogtreecommitdiff
path: root/src/sheet/loader/native
diff options
context:
space:
mode:
authorNathan Reiner <nathan@nathanreiner.xyz>2024-08-10 19:25:25 +0200
committerNathan Reiner <nathan@nathanreiner.xyz>2024-08-10 19:25:25 +0200
commit5ff507db2f6667a0305e2382037710f6082d75da (patch)
tree94954bc8547e62ac8cbdbfd327d21712deb9fef2 /src/sheet/loader/native
parent63cfcbe7a7745b276de58ec92e0141b958c44feb (diff)
imlement native csv loader
Diffstat (limited to 'src/sheet/loader/native')
-rw-r--r--src/sheet/loader/native/csv.rs19
-rw-r--r--src/sheet/loader/native/mod.rs2
2 files changed, 21 insertions, 0 deletions
diff --git a/src/sheet/loader/native/csv.rs b/src/sheet/loader/native/csv.rs
new file mode 100644
index 0000000..4a8f05d
--- /dev/null
+++ b/src/sheet/loader/native/csv.rs
@@ -0,0 +1,19 @@
+use std::{fs::File, io::BufReader};
+
+use crate::sheet::{cell::Cell, tablized::Tablized};
+
+pub fn load_csv(path: String) -> Tablized {
+ let file = File::open(path).unwrap();
+ let reader = BufReader::new(file);
+ let mut csv_reader = csv::Reader::from_reader(reader);
+
+ let mut table = Vec::new();
+
+ for result in csv_reader.records() {
+ if let Ok(record) = result {
+ table.push(record.iter().map(|s| Cell::from(s)).collect::<Vec<Cell>>())
+ }
+ }
+
+ Tablized::Vector(table)
+}
diff --git a/src/sheet/loader/native/mod.rs b/src/sheet/loader/native/mod.rs
new file mode 100644
index 0000000..41ec797
--- /dev/null
+++ b/src/sheet/loader/native/mod.rs
@@ -0,0 +1,2 @@
+
+pub mod csv;