smarter_csv 1.0.0.pre1 → 1.0.0
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.
- data/README.md +10 -11
- data/lib/smarter_csv/smarter_csv.rb +5 -1
- data/lib/smarter_csv/version.rb +1 -1
- metadata +4 -4
data/README.md
CHANGED
@@ -23,7 +23,7 @@ As the existing CSV libraries didn't fit my needs, I was writing my own CSV proc
|
|
23
23
|
#### Example 1: Reading a CSV-File in one Chunk, returning one Array of Hashes:
|
24
24
|
|
25
25
|
filename = '/tmp/input_file.txt' # TAB delimited file, each row ending with Control-M
|
26
|
-
recordsA = SmarterCSV.
|
26
|
+
recordsA = SmarterCSV.process(filename, {:col_sep => "\t", :row_sep => "\cM"}
|
27
27
|
|
28
28
|
=> returns an array of hashes
|
29
29
|
|
@@ -31,7 +31,7 @@ As the existing CSV libraries didn't fit my needs, I was writing my own CSV proc
|
|
31
31
|
|
32
32
|
# without using chunks:
|
33
33
|
filename = '/tmp/some.csv'
|
34
|
-
n = SmarterCSV.
|
34
|
+
n = SmarterCSV.process(filename, {:key_mapping => {:unwanted_row => nil, :old_row_name => :new_name}}) do |array|
|
35
35
|
# we're passing a block in, to process each resulting hash / =row (the block takes array of hashes)
|
36
36
|
# when chunking is not enabled, there is only one hash in each array
|
37
37
|
MyModel.create( array.first )
|
@@ -44,7 +44,7 @@ As the existing CSV libraries didn't fit my needs, I was writing my own CSV proc
|
|
44
44
|
|
45
45
|
# using chunks:
|
46
46
|
filename = '/tmp/some.csv'
|
47
|
-
n = SmarterCSV.
|
47
|
+
n = SmarterCSV.process(filename, {:key_mapping => {:unwanted_row => nil, :old_row_name => :new_name}, :chunk_size => 100}) do |array|
|
48
48
|
# we're passing a block in, to process each resulting hash / row (block takes array of hashes)
|
49
49
|
# when chunking is enabled, there are up to :chunk_size hashes in each array
|
50
50
|
MyModel.collection.insert( array ) # insert up to 100 records at a time
|
@@ -56,13 +56,19 @@ As the existing CSV libraries didn't fit my needs, I was writing my own CSV proc
|
|
56
56
|
#### Example 4: Reading a CSV-like File, and Processing it with Resque:
|
57
57
|
|
58
58
|
filename = '/tmp/strange_db_dump' # a file with CRTL-A as col_separator, and with CTRL-B\n as record_separator (hello iTunes)
|
59
|
-
n = SmarterCSV.
|
59
|
+
n = SmarterCSV.process(filename, {:col_sep => "\cA", :row_sep => "\cB\n", :comment_regexp => /^#/,
|
60
60
|
:chunk_size => '5' , :key_mapping => {:export_date => nil, :name => :genre}}) do |x|
|
61
61
|
puts "Resque.enque( ResqueWorkerClass, #{x.size}, #{x.inspect} )" # simulate processing each chunk
|
62
62
|
end
|
63
63
|
=> returns number of chunks
|
64
64
|
|
65
65
|
|
66
|
+
## See also:
|
67
|
+
|
68
|
+
http://www.unixgods.org/~tilo/Ruby/process_csv_as_hashes.html
|
69
|
+
|
70
|
+
|
71
|
+
|
66
72
|
## Installation
|
67
73
|
|
68
74
|
Add this line to your application's Gemfile:
|
@@ -89,10 +95,3 @@ TODO: Write usage instructions here
|
|
89
95
|
4. Push to the branch (`git push origin my-new-feature`)
|
90
96
|
5. Create new Pull Request
|
91
97
|
|
92
|
-
|
93
|
-
## See also:
|
94
|
-
|
95
|
-
http://www.unixgods.org/~tilo/Ruby/process_csv_as_hashes.html
|
96
|
-
|
97
|
-
https://gist.github.com/3101950
|
98
|
-
|
@@ -29,7 +29,7 @@ module SmarterCSV
|
|
29
29
|
# This can be very useful when passing chunked data to a post-processing step, e.g. through Resque
|
30
30
|
#
|
31
31
|
|
32
|
-
def SmarterCSV.
|
32
|
+
def SmarterCSV.process(filename, options={}, &block)
|
33
33
|
default_options = {:col_sep => ',' , :row_sep => $/ , :quote_char => '"', :remove_empty_fields => true,
|
34
34
|
:comment_regexp => /^#/, :chunk_size => nil , :key_mapping_hash => nil
|
35
35
|
}
|
@@ -107,5 +107,9 @@ module SmarterCSV
|
|
107
107
|
end
|
108
108
|
end
|
109
109
|
|
110
|
+
def SmarterCSV.process_csv(*args)
|
111
|
+
warn "[DEPRECATION] `process_csv` is deprecated. Please use `process` instead."
|
112
|
+
SmarterCSV.process(*args)
|
113
|
+
end
|
110
114
|
end
|
111
115
|
|
data/lib/smarter_csv/version.rb
CHANGED
metadata
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smarter_csv
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.0
|
5
|
+
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- ! 'Tilo Sloboda
|
@@ -50,9 +50,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
50
50
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
|
-
- - ! '
|
53
|
+
- - ! '>='
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version:
|
55
|
+
version: '0'
|
56
56
|
requirements: []
|
57
57
|
rubyforge_project:
|
58
58
|
rubygems_version: 1.8.15
|