Sha256: 39e75b52064838922006388dff7e1030988b71553dfb1b203190363360dbac40
Contents?: true
Size: 1.82 KB
Versions: 1
Compression:
Stored size: 1.82 KB
Contents
# Typedcsv Here's your standard untyped CSV: ``` name,income,created_at,tags,great Seamus,12301.2,2012-02-21,"red,blue",true ``` Now, you and I know that `12301.2` is a number and `2012-02-21` is a date and `"red,blue"` is a list... so let's just write that into the headers: ``` name,income:number,created_at:date,tags:list,great:boolean Seamus,12301.2,2012-02-21,"red,blue",true ``` Now let's parse it: ``` Typedcsv.foreach('file.csv', headers: true) do |row| row['income'] # will be a Float row['created_at'] # will be a Date row['tags'] # will be an Array row['great'] # will be TrueClass or FalseClass end ``` This gem provides `Typedcsv.foreach()`, which takes exactly the same arguments as [ruby stdlib `CSV.foreach`](https://ruby-doc.org/stdlib-2.4.1/libdoc/csv/rdoc/CSV.html#method-c-foreach). ## Types * text (default) * number * list (must be comma-separated and therefore quoted) * date (must be ISO8601) * time (must be ISO8601) * boolean (recognizes "true" or "false") ## Benchmarks It's about 10x slower than ruby's stdlib `CSV.foreach`: ``` cd benchmark && ruby benchmark.rb [...] CSV.foreach - array mode 2.503 (± 0.0%) i/s - 13.000 in 5.197588s Typedcsv.foreach - array mode 0.253 (± 0.0%) i/s - 2.000 in 7.892107s CSV.foreach - hash mode 1.830 (± 0.0%) i/s - 10.000 in 5.466998s Typedcsv.foreach - hash mode 0.226 (± 0.0%) i/s - 2.000 in 8.867616s ``` ## Sponsor <p><a href="https://www.faraday.io"><img src="https://s3.amazonaws.com/faraday-assets/files/img/logo.svg" alt="Faraday logo"/></a></p> We use [`typedcsv`](https://github.com/faradayio/typedcsv) for [B2C customer intelligence at Faraday](https://www.faraday.io). ## Copyright Copyright 2017 Faraday
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
typedcsv-1.0.0 | README.md |