enum_csv 1.1.0 → 1.2.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.
- checksums.yaml +5 -5
- data/CHANGELOG +12 -0
- data/MIT-LICENSE +1 -1
- data/README.rdoc +2 -6
- data/lib/enum_csv.rb +18 -15
- metadata +54 -12
- data/Rakefile +0 -69
- data/spec/enum_csv_spec.rb +0 -49
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 5ce120d324f6b9eb467778d32de89939bcd8f02f02d364e74eeb88ee8e4de9f4
|
4
|
+
data.tar.gz: fd62bf611e86e4b2e2e26b0b3450e83292445b12ae2a42f6a493dcd71c6f1dee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9236d20fa145e6ebe6917fe5be47c681397a5e502e9757ae4441032dbef8551ced99a4bc5b22d1c484b086fcdffea18125ba95d0e6bd9552d211b99eff6b868a
|
7
|
+
data.tar.gz: 54c1d55ae3de6ca4d4208113c319bcabbb76c0e8dc746f9a1b2e0ce7c4395979283607c410900a56874950d76888692c4bb784e750d26a346e34042d2dad2db2
|
data/CHANGELOG
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
=== 1.2.0 (2023-09-19)
|
2
|
+
|
3
|
+
* Set required_ruby_version to 2.3+, as no version of the csv gem supports Ruby <2.3 (jeremyevans)
|
4
|
+
|
5
|
+
* Add dependency on csv, as csv is moving from standard library to bundled gem in Ruby 3.4 (jeremyevans)
|
6
|
+
|
7
|
+
=== 1.1.1 (2020-01-31)
|
8
|
+
|
9
|
+
* Drop shipping of tests in gem (jeremyevans)
|
10
|
+
|
11
|
+
* Avoid keyword argument separation warnings on Ruby 2.7+ (jeremyevans)
|
12
|
+
|
1
13
|
=== 1.1.0 (2015-01-27)
|
2
14
|
|
3
15
|
* Support a comma-delimited string for the :headers option (jeremyevans)
|
data/MIT-LICENSE
CHANGED
data/README.rdoc
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
= EnumCSV
|
2
2
|
|
3
3
|
EnumCSV exposes a single method, csv, for easily creating CSV
|
4
|
-
output/files from enumerable objects. It is a
|
4
|
+
output/files from enumerable objects. It is a simple wrapper
|
5
5
|
class for ruby's csv library.
|
6
6
|
|
7
7
|
= Installation
|
8
8
|
|
9
|
-
|
9
|
+
gem install enum_csv
|
10
10
|
|
11
11
|
= Source Code
|
12
12
|
|
@@ -34,10 +34,6 @@ output:
|
|
34
34
|
|
35
35
|
EnumCSV.csv([{:a=>1, :b=>2}, {:a=>3, :b=>4}]){|l| [l[:b], l[:a] + 10]} => "2,11\n4,13\n"
|
36
36
|
|
37
|
-
= Ruby 1.8 Usage
|
38
|
-
|
39
|
-
On Ruby 1.8, you need to install the fastercsv gem to use this library.
|
40
|
-
|
41
37
|
= License
|
42
38
|
|
43
39
|
MIT
|
data/lib/enum_csv.rb
CHANGED
@@ -1,14 +1,10 @@
|
|
1
|
+
# frozen-string-literal: true
|
2
|
+
|
3
|
+
require 'csv'
|
4
|
+
|
1
5
|
# EnumCSV exposes a single method, csv, for easily creating CSV
|
2
6
|
# output/files from enumerable objects.
|
3
7
|
module EnumCSV
|
4
|
-
if RUBY_VERSION >= '1.9'
|
5
|
-
require 'csv'
|
6
|
-
else
|
7
|
-
require 'fastercsv'
|
8
|
-
# Use FasterCSV on ruby 1.8
|
9
|
-
CSV = ::FasterCSV
|
10
|
-
end
|
11
|
-
|
12
8
|
# Create CSV from the given Enumerable object. If a block is given,
|
13
9
|
# each item in the enumerable is yielded to the block, and the block
|
14
10
|
# should return an array of of items to use for the CSV line.
|
@@ -23,8 +19,17 @@ module EnumCSV
|
|
23
19
|
def csv(enum, opts={})
|
24
20
|
headers = opts[:headers]
|
25
21
|
headers = headers.split(',') if headers.is_a?(String)
|
26
|
-
|
27
|
-
|
22
|
+
has_headers = headers.is_a?(Array) && !opts.has_key?(:write_headers)
|
23
|
+
has_file = opts[:file]
|
24
|
+
|
25
|
+
if has_headers || has_file
|
26
|
+
opts = opts.dup
|
27
|
+
file = opts.delete(:file)
|
28
|
+
|
29
|
+
if has_headers
|
30
|
+
opts[:write_headers] = true
|
31
|
+
opts[:headers] = headers
|
32
|
+
end
|
28
33
|
end
|
29
34
|
|
30
35
|
csv_proc = proc do |csv|
|
@@ -34,13 +39,11 @@ module EnumCSV
|
|
34
39
|
end
|
35
40
|
end
|
36
41
|
|
37
|
-
if
|
38
|
-
|
39
|
-
file = opts.delete(:file)
|
40
|
-
CSV.open(file, 'wb', opts, &csv_proc)
|
42
|
+
if file
|
43
|
+
CSV.open(file, 'wb', **opts, &csv_proc)
|
41
44
|
nil
|
42
45
|
else
|
43
|
-
CSV.generate(opts, &csv_proc)
|
46
|
+
CSV.generate(**opts, &csv_proc)
|
44
47
|
end
|
45
48
|
end
|
46
49
|
module_function :csv
|
metadata
CHANGED
@@ -1,15 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: enum_csv
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Evans
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
12
|
-
dependencies:
|
11
|
+
date: 2023-09-19 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: csv
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: minitest
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: minitest-global_expectations
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
13
55
|
description: |
|
14
56
|
EnumCSV exposes a single method, csv, for easily creating CSV
|
15
57
|
output/files from enumerable objects.
|
@@ -24,14 +66,15 @@ files:
|
|
24
66
|
- CHANGELOG
|
25
67
|
- MIT-LICENSE
|
26
68
|
- README.rdoc
|
27
|
-
- Rakefile
|
28
69
|
- lib/enum_csv.rb
|
29
|
-
- spec/enum_csv_spec.rb
|
30
70
|
homepage: http://github.com/jeremyevans/enum_csv
|
31
71
|
licenses:
|
32
72
|
- MIT
|
33
|
-
metadata:
|
34
|
-
|
73
|
+
metadata:
|
74
|
+
bug_tracker_uri: https://github.com/jeremyevans/enum_csv/issues
|
75
|
+
changelog_uri: https://github.com/jeremyevans/enum_csv/blob/master/CHANGELOG
|
76
|
+
source_code_uri: https://github.com/jeremyevans/enum_csv
|
77
|
+
post_install_message:
|
35
78
|
rdoc_options:
|
36
79
|
- "--quiet"
|
37
80
|
- "--line-numbers"
|
@@ -46,16 +89,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
46
89
|
requirements:
|
47
90
|
- - ">="
|
48
91
|
- !ruby/object:Gem::Version
|
49
|
-
version: '
|
92
|
+
version: '2.3'
|
50
93
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
51
94
|
requirements:
|
52
95
|
- - ">="
|
53
96
|
- !ruby/object:Gem::Version
|
54
97
|
version: '0'
|
55
98
|
requirements: []
|
56
|
-
|
57
|
-
|
58
|
-
signing_key:
|
99
|
+
rubygems_version: 3.4.10
|
100
|
+
signing_key:
|
59
101
|
specification_version: 4
|
60
102
|
summary: Create CSV from Enumerables
|
61
103
|
test_files: []
|
data/Rakefile
DELETED
@@ -1,69 +0,0 @@
|
|
1
|
-
require "rake"
|
2
|
-
require "rake/clean"
|
3
|
-
|
4
|
-
CLEAN.include ["enum_csv-*.gem", "rdoc", "coverage"]
|
5
|
-
|
6
|
-
desc "Build enum_csv gem"
|
7
|
-
task :package=>[:clean] do |p|
|
8
|
-
sh %{#{FileUtils::RUBY} -S gem build enum_csv.gemspec}
|
9
|
-
end
|
10
|
-
|
11
|
-
### Specs
|
12
|
-
|
13
|
-
begin
|
14
|
-
begin
|
15
|
-
# RSpec 1
|
16
|
-
require "spec/rake/spectask"
|
17
|
-
spec_class = Spec::Rake::SpecTask
|
18
|
-
spec_files_meth = :spec_files=
|
19
|
-
rescue LoadError
|
20
|
-
# RSpec 2
|
21
|
-
require "rspec/core/rake_task"
|
22
|
-
spec_class = RSpec::Core::RakeTask
|
23
|
-
spec_files_meth = :pattern=
|
24
|
-
end
|
25
|
-
|
26
|
-
spec = lambda do |name, files, d|
|
27
|
-
lib_dir = File.join(File.dirname(File.expand_path(__FILE__)), 'lib')
|
28
|
-
ENV['RUBYLIB'] ? (ENV['RUBYLIB'] += ":#{lib_dir}") : (ENV['RUBYLIB'] = lib_dir)
|
29
|
-
desc d
|
30
|
-
spec_class.new(name) do |t|
|
31
|
-
t.send(spec_files_meth, files)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
task :default => [:spec]
|
36
|
-
spec.call("spec", Dir["spec/*_spec.rb"], "Run specs")
|
37
|
-
rescue LoadError
|
38
|
-
task :default do
|
39
|
-
puts "Must install rspec to run the default task (which runs specs)"
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
### RDoc
|
44
|
-
|
45
|
-
RDOC_DEFAULT_OPTS = ["--quiet", "--line-numbers", "--inline-source", '--title', 'EnumCSV: Create CSV from Enumerables']
|
46
|
-
|
47
|
-
begin
|
48
|
-
gem 'rdoc', '= 3.12.2'
|
49
|
-
gem 'hanna-nouveau'
|
50
|
-
RDOC_DEFAULT_OPTS.concat(['-f', 'hanna'])
|
51
|
-
rescue Gem::LoadError
|
52
|
-
end
|
53
|
-
|
54
|
-
rdoc_task_class = begin
|
55
|
-
require "rdoc/task"
|
56
|
-
RDoc::Task
|
57
|
-
rescue LoadError
|
58
|
-
require "rake/rdoctask"
|
59
|
-
Rake::RDocTask
|
60
|
-
end
|
61
|
-
|
62
|
-
RDOC_OPTS = RDOC_DEFAULT_OPTS + ['--main', 'README.rdoc']
|
63
|
-
|
64
|
-
rdoc_task_class.new do |rdoc|
|
65
|
-
rdoc.rdoc_dir = "rdoc"
|
66
|
-
rdoc.options += RDOC_OPTS
|
67
|
-
rdoc.rdoc_files.add %w"README.rdoc CHANGELOG MIT-LICENSE lib/**/*.rb"
|
68
|
-
end
|
69
|
-
|
data/spec/enum_csv_spec.rb
DELETED
@@ -1,49 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require File.join(File.dirname(File.expand_path(__FILE__)), '../lib/enum_csv')
|
3
|
-
|
4
|
-
describe "EnumCSV.csv" do
|
5
|
-
TEST_FILE = File.join(File.dirname(File.expand_path(__FILE__)), 'test.csv')
|
6
|
-
after(:all) do
|
7
|
-
File.delete(TEST_FILE)
|
8
|
-
end
|
9
|
-
|
10
|
-
it "should return string of CSV data for enumerable" do
|
11
|
-
EnumCSV.csv([[1, 2]]).should == "1,2\n"
|
12
|
-
EnumCSV.csv([[1, 2], [3, 4]]).should == "1,2\n3,4\n"
|
13
|
-
EnumCSV.csv([[1, '2,3'], [3, 4]]).should == "1,\"2,3\"\n3,4\n"
|
14
|
-
EnumCSV.csv([[1, nil], [3, 4]]).should == "1,\n3,4\n"
|
15
|
-
end
|
16
|
-
|
17
|
-
it "should support :headers option for a headers string" do
|
18
|
-
EnumCSV.csv([[1, 2]], :headers=>['a', 'b']).should == "a,b\n1,2\n"
|
19
|
-
EnumCSV.csv([[1, 2], [3, 4]], :headers=>['a', 'b']).should == "a,b\n1,2\n3,4\n"
|
20
|
-
EnumCSV.csv([[1, '2,3'], [3, 4]], :headers=>['a,b', 'c']).should == "\"a,b\",c\n1,\"2,3\"\n3,4\n"
|
21
|
-
EnumCSV.csv([[1, nil], [3, 4]], :headers=>['a', nil]).should == "a,\n1,\n3,4\n"
|
22
|
-
end
|
23
|
-
|
24
|
-
it "should support :headers option as a comma delimited string" do
|
25
|
-
EnumCSV.csv([[1, 2]], :headers=>'a,b').should == "a,b\n1,2\n"
|
26
|
-
EnumCSV.csv([[1, 2], [3, 4]], :headers=>'a,b').should == "a,b\n1,2\n3,4\n"
|
27
|
-
end
|
28
|
-
|
29
|
-
it "should support :file option for writing to a file" do
|
30
|
-
EnumCSV.csv([[1, 2]], :file=>TEST_FILE).should be_nil
|
31
|
-
File.read(TEST_FILE).should == "1,2\n"
|
32
|
-
EnumCSV.csv([[1, 2]], :file=>TEST_FILE, :headers=>['a', 'b'])
|
33
|
-
File.read(TEST_FILE).should == "a,b\n1,2\n"
|
34
|
-
end
|
35
|
-
|
36
|
-
it "should support other csv options" do
|
37
|
-
EnumCSV.csv([[1, 2]], :row_sep=>'|').should == "1,2|"
|
38
|
-
EnumCSV.csv([[1, 2], [3, 4]], :col_sep=>'^').should == "1^2\n3^4\n"
|
39
|
-
end
|
40
|
-
|
41
|
-
it "should yield elements to the block if given" do
|
42
|
-
EnumCSV.csv([[1, 2]]){|l| l.map{|i| i*2}}.should == "2,4\n"
|
43
|
-
EnumCSV.csv([[1, 2]], :headers=>['a', 'b']){|l| l.map{|i| i*2}}.should == "a,b\n2,4\n"
|
44
|
-
end
|
45
|
-
|
46
|
-
it "should be callable as a method if including the module" do
|
47
|
-
Class.new{include EnumCSV}.new.send(:csv, [[1, 2]]).should == "1,2\n"
|
48
|
-
end
|
49
|
-
end
|