1use crate::args::Head;
2use crate::utils::return_result::{CliResultData, ResultData};
3use std::fs::File;
4use std::io::{BufRead, BufReader};
5
6impl Head {
7 #[allow(dead_code)]
8 pub fn csv_run_lib(&self) -> CliResultData {
9 let mut out = ResultData::new();
10 let path = self.path();
11
12 let mut lines = BufReader::new(File::open(path)?)
14 .lines()
15 .take(self.n + 1 - self.no_header as usize);
16
17 if let Some(header) = lines.next() {
19 if let Ok(h) = header {
20 let h = self.split_row_to_owned_vec(&h);
21 out.insert_header(h);
22 }
23 }
24
25 lines.for_each(|r| {
26 if let Ok(r) = r {
27 let r = self.split_row_to_owned_vec(&r);
28 out.insert_record(r);
29 }
30 });
31
32 Ok(Some(out))
33 }
34}