diff options
Diffstat (limited to 'src/Csv')
| -rw-r--r-- | src/Csv/mod.rs | 62 |
1 files changed, 0 insertions, 62 deletions
diff --git a/src/Csv/mod.rs b/src/Csv/mod.rs deleted file mode 100644 index 29e1aca..0000000 --- a/src/Csv/mod.rs +++ /dev/null @@ -1,62 +0,0 @@ -use std::fs::File; -use std::io; -use std::io::BufRead; - -/** - Represents a CSV file - **/ - -pub struct CsvFile { - path : String, - delim : String, - pub header : Vec<String>, - pub content : Vec<Vec<String>>, - has_header : bool -} - -impl CsvFile { - pub fn new(path: &str, delim: &str, header: bool) -> CsvFile { - CsvFile { - path : String::from(path), - delim: String::from(delim), - header : Vec::new(), - content : Vec::new(), - has_header : header - } - - } - - // TODO nicht gleich viele spalten - fn parse_line(line : String, delim: &str) -> Vec<String> { - let mut columns : Vec<String> = Vec::new(); - for column in line.split(delim).collect::<Vec<&str>>() { - columns.push(column.to_string()); - } - columns - } - - - pub fn read_file(path: &str, delim: &str, header: bool) -> Result<CsvFile, io::Error> { - let fd = File::open(path)?; - let reader = io::BufReader::new(fd); - let mut column_names : Vec<String> = Vec::new(); - let mut lines : Vec<Vec<String>> = Vec::new(); - let mut first = true; - - for line in reader.lines() { - let line = line?; - if header && first { - column_names.append(&mut CsvFile::parse_line(line, delim)); - first = false; - } else { - lines.push(CsvFile::parse_line(line, delim)); - } - } - - Ok(CsvFile { path: String::from(path), - delim : String::from(delim), - header : column_names, - content : lines, - has_header: header } ) - } -} |
