csv-pipeline

Crates.iocsv-pipeline
lib.rscsv-pipeline
version0.4.0
sourcesrc
created_at2023-01-11 13:20:33.674457
updated_at2023-05-25 06:52:04.061242
descriptionCSV processing library
homepagehttps://github.com/probablykasper/csv-pipeline#readme
repositoryhttps://github.com/probablykasper/csv-pipeline
max_upload_size
id756411
size41,199
Kasper (probablykasper)

documentation

https://docs.rs/csv-pipeline

README

CSV Pipeline

CSV processing library inspired by csvsc

Crates.io Documentation

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

  1. Update CHANGELOG.md
  2. Bump the version number in Cargo.toml
  3. Run cargo test
  4. Run cargo publish
  5. Create a git tag in format v#.#.#
  6. Create GitHub release with release notes
Commit count: 48

cargo fmt