vega_lite_3/data/
csv_data.rs1use 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}