gitql_cli/printer/
csv_printer.rs

1use csv::Writer;
2use gitql_core::object::GitQLObject;
3
4use super::base::OutputPrinter;
5
6pub struct CSVPrinter;
7
8impl OutputPrinter for CSVPrinter {
9    fn print(&self, object: &mut GitQLObject) {
10        let mut writer = Writer::from_writer(vec![]);
11        let _ = writer.write_record(object.titles.clone());
12        let row_len = object.titles.len();
13        if let Some(group) = object.groups.first() {
14            for row in &group.rows {
15                let mut values_row: Vec<String> = Vec::with_capacity(row_len);
16                for value in &row.values {
17                    values_row.push(value.literal());
18                }
19                let _ = writer.write_record(values_row);
20            }
21        }
22
23        if let Ok(writer_content) = writer.into_inner() {
24            println!("{:?}", String::from_utf8(writer_content));
25        }
26    }
27}