Skip to main content

vega_lite_3/data/
csv_data.rs

1use crate::RemovableValue;
2use crate::UrlData;
3use crate::UrlDataBuilder;
4use crate::UrlDataInlineDataset;
5use csv::Reader;
6
7#[cfg(feature = "csv")]
8impl<R> From<Reader<R>> for UrlData
9where
10    R: std::io::Read,
11{
12    fn from(mut v: Reader<R>) -> Self {
13        UrlDataBuilder::default()
14            .values(UrlDataInlineDataset::UnionArray(
15                v.records()
16                    .map(|it: Result<csv::StringRecord, _>| {
17                        serde_json::Value::Array(
18                            it.expect("TODO manage error in csv")
19                                .iter()
20                                .map(|f: &str| serde_json::Value::String(f.to_string()))
21                                .collect::<Vec<_>>(),
22                        )
23                    })
24                    .collect::<Vec<_>>(),
25            ))
26            .build()
27            .unwrap()
28    }
29}
30
31#[cfg(feature = "csv")]
32impl<R> From<Reader<R>> for RemovableValue<UrlData>
33where
34    R: std::io::Read,
35{
36    fn from(v: Reader<R>) -> Self {
37        RemovableValue::Specified(v.into())
38    }
39}