Skip to content

Commit

Permalink
Merge pull request #26 from sardap/main
Browse files Browse the repository at this point in the history
added with_delimiter function to csv asset plugin allowing user to change the delimiter for parsing
  • Loading branch information
NiklasEi authored Jan 16, 2024
2 parents 40b0c60 + d611de5 commit 8cdd13a
Showing 1 changed file with 13 additions and 1 deletion.
14 changes: 13 additions & 1 deletion src/csv.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ use thiserror::Error;
pub struct CsvAssetPlugin<A> {
extensions: Vec<&'static str>,
_marker: PhantomData<A>,
delimiter: u8,
}

impl<A> Plugin for CsvAssetPlugin<A>
Expand All @@ -21,6 +22,7 @@ where
.register_asset_loader(CsvAssetLoader::<A> {
extensions: self.extensions.clone(),
_marker: PhantomData,
delimiter: self.delimiter,
});
}
}
Expand All @@ -34,13 +36,21 @@ where
Self {
extensions: extensions.to_owned(),
_marker: PhantomData,
delimiter: b',',
}
}

/// Change the delimiter used to parse the CSV file.
pub fn with_delimiter(mut self, delimiter: u8) -> Self {
self.delimiter = delimiter;
self
}
}

struct CsvAssetLoader<A> {
extensions: Vec<&'static str>,
_marker: PhantomData<A>,
delimiter: u8,
}

/// Possible errors that can be produced by [`CsvAssetLoader`]
Expand Down Expand Up @@ -82,7 +92,9 @@ where
Box::pin(async move {
let mut bytes = Vec::new();
reader.read_to_end(&mut bytes).await?;
let mut reader = csv::Reader::from_reader(bytes.as_slice());
let mut reader = csv::ReaderBuilder::new()
.delimiter(self.delimiter)
.from_reader(bytes.as_slice());
let mut handles = vec![];
for (index, result) in reader.deserialize().enumerate() {
let asset: A = result?;
Expand Down

0 comments on commit 8cdd13a

Please sign in to comment.