csv_piper 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 29eef903242a17d82a0a17dd906578c12beca220
4
- data.tar.gz: ea961aa7ed1a1e8d060b3014dc0a224439778fa9
3
+ metadata.gz: 8769722439ae9b640dedf199eb2a16a23d8b8be7
4
+ data.tar.gz: 1d4b35a6277fec01080e61831913dac7bce9b499
5
5
  SHA512:
6
- metadata.gz: c903d63cf41ff9027f9e0d20b6c1f6a057b4d9d969a27e0566c4c34b56a8eef73eddb0d24fd541600b240326500c75780fea479d88a90740bd1f15f248001963
7
- data.tar.gz: 69b059aadd6a20b73326b94ec449fb4d81f3ab9e076f2a4b8702baa3f4f474e63eb121cfe0225882d837e94bd2ce000ae0122ce2a1116cc6dc3efa38605abefa
6
+ metadata.gz: 1a5c885a3513e441075c0de6e99b46f1be3eb63d9408a894566290ca262c3b6313a04527ce24cc89ac7cf231b72542418df232c785e7448cb3a7c567be07128f
7
+ data.tar.gz: 608d031277fb6b598d9da0b295b80e7347e4668ab7d1891d080cdaed870a55b58dbeb0917333bfaa6030bc4af0b1d5a8da9fcfe74787643e30e41fd8e87a9571
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2.2
4
+ before_install: gem install bundler -v 1.10.2
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ [![Gem Version](https://badge.fury.io/rb/csv_piper.svg)](http://badge.fury.io/rb/csv_piper) [![Build Status](https://travis-ci.org/jazzarati/csv_piper.svg?branch=master)](https://travis-ci.org/jazzarati/csv_piper)
2
+
1
3
  # CsvPiper
2
4
 
3
5
  A simple wrapper to create a pipeline style csv processor that makes your transforms easily testable.
@@ -5,7 +5,7 @@ module CsvPiper
5
5
  CSV_HEADER_OPTIONS = { headers: true, return_headers: true, skip_blanks: true, skip_lines: /^(\s*,)*$/ }
6
6
 
7
7
  def initialize(io_stream:, pre_processors: [], processors: [], csv_options: {}, required_headers: [])
8
- @pre_processors = [PreProcessors::RemoveExtraColumns.new] + pre_processors
8
+ @pre_processors = pre_processors
9
9
  @processors = processors
10
10
  @required_headers = required_headers
11
11
  @csv_options = csv_options.merge(CSV_HEADER_OPTIONS)
@@ -1,10 +1,20 @@
1
1
  module CsvPiper
2
2
  module PreProcessors
3
- class RemoveExtraColumns
3
+ class RemoveEmptyColumns
4
4
  def process(origin, errors)
5
- modified_origin = origin.reject { |key, value| key.nil? || key.empty? }
5
+ modified_origin = origin.reject { |key, _| key.nil? || key.strip.empty? }
6
6
  [modified_origin, errors]
7
7
  end
8
8
  end
9
+
10
+ # Just removing nil is significanlty faster for large csvs (100M+ cells)
11
+ # (10M cells = ~20x faster on 10 col row [3.8s vs 0.19s], ~100x faster on 1000 col row [3.8s vs 0.035s]).
12
+ # Even better is your processors don't need this pre-processing.
13
+ class RemoveNilColumns
14
+ def process(origin, errors)
15
+ origin.delete(nil)
16
+ [origin, errors]
17
+ end
18
+ end
9
19
  end
10
20
  end
@@ -1,3 +1,3 @@
1
1
  module CsvPiper
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: csv_piper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jarrod Sibbison
@@ -101,6 +101,7 @@ extra_rdoc_files: []
101
101
  files:
102
102
  - ".gitignore"
103
103
  - ".rspec"
104
+ - ".travis.yml"
104
105
  - Gemfile
105
106
  - LICENSE.txt
106
107
  - README.md