5 releases (3 breaking)
0.4.0 | May 25, 2023 |
---|---|
0.3.1 | Feb 17, 2023 |
0.3.0 | Jan 18, 2023 |
0.2.0 | Jan 11, 2023 |
0.1.0 | Jan 11, 2023 |
#1436 in Parser implementations
41KB
1K
SLoC
CSV Pipeline
CSV processing library inspired by csvsc
Example
use csv_pipeline::{Pipeline, Transformer};
let source = "\
Person,Score\n\
A,1\n\
A,8\n\
B,3\n\
B,4\n";
let reader = csv::Reader::from_reader(source.as_bytes());
let csv = Pipeline::from_reader(reader)
.unwrap()
.map(|_headers, row| Ok(row))
// Transform into a new csv
.transform_into(|| {
vec![
// Keep every Person
Transformer::new("Person").keep_unique(),
// Sum the scores into a "Total score" column
Transformer::new("Total score").from_col("Score").sum(0),
]
})
.collect_into_string()
.unwrap();
assert_eq!(
csv,
"Person,Total score\n\
A,9\n\
B,7\n"
);
Dev Instructions
Get started
Install Rust.
Run tests:
cargo test
Releasing a new version
- Update
CHANGELOG.md
- Bump the version number in
Cargo.toml
- Run
cargo test
- Run
cargo publish
- Create a git tag in format
v#.#.#
- Create GitHub release with release notes
Dependencies
~1.2–1.7MB
~20K SLoC