easyio 0.2.0 → 0.3.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/Gemfile +3 -0
- data/LICENSE +0 -2
- data/README.rdoc +3 -5
- data/Rakefile +1 -5
- data/VERSION +1 -1
- data/easyio.gemspec +22 -28
- data/lib/easyio.rb +6 -6
- data/test/helper.rb +29 -7
- data/test/test_easyio.rb +28 -29
- metadata +42 -70
- data/.gitignore +0 -24
data/Gemfile
ADDED
data/LICENSE
CHANGED
data/README.rdoc
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
= easyio
|
2
2
|
|
3
|
-
|
3
|
+
A simple library for making working with CSV files slightly easier by wrapping up default options and providing a few simple helper methods.
|
4
|
+
|
5
|
+
Note: Version 0.3 and above require Ruby 1.9+, for 1.8 compatibility use Version 0.2
|
4
6
|
|
5
7
|
== Note on Patches/Pull Requests
|
6
8
|
|
@@ -12,7 +14,3 @@ Description goes here.
|
|
12
14
|
(if you want to have your own version, that is fine but
|
13
15
|
bump version in a commit by itself I can ignore when I pull)
|
14
16
|
* Send me a pull request. Bonus points for topic branches.
|
15
|
-
|
16
|
-
== Copyright
|
17
|
-
|
18
|
-
Copyright (c) 2009 Steve. See LICENSE for details.
|
data/Rakefile
CHANGED
@@ -10,9 +10,7 @@ begin
|
|
10
10
|
gem.email = "steve.eichert@gmail.com"
|
11
11
|
gem.homepage = "http://github.com/eichert12/easyio"
|
12
12
|
gem.authors = ["Steve Eichert"]
|
13
|
-
gem.add_runtime_dependency "fastercsv", ">= 1.5.0"
|
14
13
|
gem.add_runtime_dependency "aws-s3", ">= 0.6.2"
|
15
|
-
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
16
14
|
end
|
17
15
|
Jeweler::GemcutterTasks.new
|
18
16
|
rescue LoadError
|
@@ -39,11 +37,9 @@ rescue LoadError
|
|
39
37
|
end
|
40
38
|
end
|
41
39
|
|
42
|
-
task :test => :check_dependencies
|
43
|
-
|
44
40
|
task :default => :test
|
45
41
|
|
46
|
-
require '
|
42
|
+
require 'rdoc/task'
|
47
43
|
Rake::RDocTask.new do |rdoc|
|
48
44
|
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
49
45
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.3.0
|
data/easyio.gemspec
CHANGED
@@ -1,56 +1,50 @@
|
|
1
1
|
# Generated by jeweler
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version = "0.
|
7
|
+
s.name = "easyio"
|
8
|
+
s.version = "0.3.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Steve Eichert"]
|
12
|
-
s.date =
|
13
|
-
s.description =
|
14
|
-
s.email =
|
12
|
+
s.date = "2012-01-04"
|
13
|
+
s.description = "A gem for making IO tasks easy (at least for me)"
|
14
|
+
s.email = "steve.eichert@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE",
|
17
|
-
|
17
|
+
"README.rdoc"
|
18
18
|
]
|
19
19
|
s.files = [
|
20
20
|
".document",
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
"test/helper.rb",
|
29
|
-
"test/test_easyio.rb"
|
30
|
-
]
|
31
|
-
s.homepage = %q{http://github.com/eichert12/easyio}
|
32
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
33
|
-
s.require_paths = ["lib"]
|
34
|
-
s.rubygems_version = %q{1.3.7}
|
35
|
-
s.summary = %q{A gem for making IO tasks easy (at least for me)}
|
36
|
-
s.test_files = [
|
21
|
+
"Gemfile",
|
22
|
+
"LICENSE",
|
23
|
+
"README.rdoc",
|
24
|
+
"Rakefile",
|
25
|
+
"VERSION",
|
26
|
+
"easyio.gemspec",
|
27
|
+
"lib/easyio.rb",
|
37
28
|
"test/helper.rb",
|
38
|
-
|
29
|
+
"test/test_easyio.rb"
|
39
30
|
]
|
31
|
+
s.homepage = "http://github.com/eichert12/easyio"
|
32
|
+
s.require_paths = ["lib"]
|
33
|
+
s.rubygems_version = "1.8.13"
|
34
|
+
s.summary = "A gem for making IO tasks easy (at least for me)"
|
40
35
|
|
41
36
|
if s.respond_to? :specification_version then
|
42
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
43
37
|
s.specification_version = 3
|
44
38
|
|
45
39
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
46
|
-
s.add_runtime_dependency(%q<
|
40
|
+
s.add_runtime_dependency(%q<jeweler>, [">= 0"])
|
47
41
|
s.add_runtime_dependency(%q<aws-s3>, [">= 0.6.2"])
|
48
42
|
else
|
49
|
-
s.add_dependency(%q<
|
43
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
50
44
|
s.add_dependency(%q<aws-s3>, [">= 0.6.2"])
|
51
45
|
end
|
52
46
|
else
|
53
|
-
s.add_dependency(%q<
|
47
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
54
48
|
s.add_dependency(%q<aws-s3>, [">= 0.6.2"])
|
55
49
|
end
|
56
50
|
end
|
data/lib/easyio.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
require '
|
1
|
+
require 'csv'
|
2
2
|
|
3
3
|
class EasyIO
|
4
4
|
DefaultOptions = { :col_sep => ",", :headers => true, :header_converters => :symbol }
|
5
|
-
DefaultSource = defined?(
|
5
|
+
DefaultSource = defined?(Rails.env) && Rails.env == "production" ? :s3 : :file_system
|
6
6
|
|
7
7
|
def self.default_s3_bucket(bucket)
|
8
8
|
@default_bucket = bucket
|
@@ -13,11 +13,11 @@ class EasyIO
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def self.write_csv(file)
|
16
|
-
|
16
|
+
CSV.open(file, "w") { |csv| yield csv }
|
17
17
|
end
|
18
18
|
|
19
19
|
def self.open_csv(file, options = {})
|
20
|
-
|
20
|
+
CSV.open(file, default_options(options)) { |csv| yield csv }
|
21
21
|
end
|
22
22
|
|
23
23
|
def self.file_source(options = {})
|
@@ -31,7 +31,7 @@ class EasyIO
|
|
31
31
|
url = AWS::S3::S3Object.url_for(file, get_s3_bucket(options))
|
32
32
|
open(url) do |f|
|
33
33
|
f.each_line do |line|
|
34
|
-
|
34
|
+
CSV.parse(line, default_options(options)) do |row|
|
35
35
|
yield row
|
36
36
|
end
|
37
37
|
end
|
@@ -46,7 +46,7 @@ class EasyIO
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def self.parse(string, options = {})
|
49
|
-
|
49
|
+
CSV.parse(string, default_options(options)) do |row|
|
50
50
|
yield row
|
51
51
|
end
|
52
52
|
end
|
data/test/helper.rb
CHANGED
@@ -1,10 +1,32 @@
|
|
1
1
|
require 'rubygems'
|
2
|
-
require '
|
3
|
-
|
2
|
+
require 'bundler'
|
3
|
+
Bundler.setup(:default, :test)
|
4
|
+
Bundler.require(:default, :test)
|
4
5
|
|
5
|
-
|
6
|
-
$LOAD_PATH.unshift
|
7
|
-
|
6
|
+
dir = File.dirname(File.expand_path(__FILE__))
|
7
|
+
$LOAD_PATH.unshift dir + '/../lib'
|
8
|
+
$TESTING = true
|
9
|
+
require 'test/unit'
|
8
10
|
|
9
|
-
|
10
|
-
|
11
|
+
##
|
12
|
+
# test/spec/mini 3
|
13
|
+
# http://gist.github.com/25455
|
14
|
+
# chris@ozmm.org
|
15
|
+
#
|
16
|
+
def context(*args, &block)
|
17
|
+
return super unless (name = args.first) && block
|
18
|
+
require 'test/unit'
|
19
|
+
klass = Class.new(defined?(ActiveSupport::TestCase) ? ActiveSupport::TestCase : Test::Unit::TestCase) do
|
20
|
+
def self.test(name, &block)
|
21
|
+
define_method("test_#{name.gsub(/\W/,'_')}", &block) if block
|
22
|
+
end
|
23
|
+
def self.xtest(*args) end
|
24
|
+
def self.setup(&block) define_method(:setup, &block) end
|
25
|
+
def self.teardown(&block) define_method(:teardown, &block) end
|
26
|
+
end
|
27
|
+
(class << klass; self end).send(:define_method, :name) { name.gsub(/\W/,'_') }
|
28
|
+
klass.class_eval &block
|
29
|
+
|
30
|
+
# XXX: In 1.8.x, not all tests will run unless anonymous classes are kept in scope.
|
31
|
+
($test_classes ||= []) << klass
|
32
|
+
end
|
data/test/test_easyio.rb
CHANGED
@@ -1,40 +1,39 @@
|
|
1
1
|
require 'helper'
|
2
|
+
require 'easyio'
|
2
3
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
end
|
4
|
+
context "file_source" do
|
5
|
+
test "use file system when running in development" do
|
6
|
+
assert_equal EasyIO.file_source, :file_system
|
7
|
+
end
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
end
|
9
|
+
test "use provided source when specified in options" do
|
10
|
+
assert_equal EasyIO.file_source(:source => :foo), :foo
|
12
11
|
end
|
13
|
-
|
14
|
-
context "get_s3_bucket" do
|
15
|
-
should "get bucket from options when available" do
|
16
|
-
assert_equal EasyIO.get_s3_bucket(:bucket => "my-awesome-bucket"), "my-awesome-bucket"
|
17
|
-
end
|
12
|
+
end
|
18
13
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
14
|
+
context "get_s3_bucket" do
|
15
|
+
test "get bucket from options when available" do
|
16
|
+
assert_equal EasyIO.get_s3_bucket(:bucket => "my-awesome-bucket"), "my-awesome-bucket"
|
17
|
+
end
|
23
18
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
end
|
19
|
+
test "use bucket from options before default bucket" do
|
20
|
+
EasyIO.default_s3_bucket "foobar"
|
21
|
+
assert_equal EasyIO.get_s3_bucket(:bucket => "my-awesome-bucket"), "my-awesome-bucket"
|
28
22
|
end
|
29
23
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
24
|
+
test "get use default_s3_bucket when set" do
|
25
|
+
EasyIO.default_s3_bucket "foobar"
|
26
|
+
assert_equal EasyIO.get_s3_bucket, "foobar"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context "parse" do
|
31
|
+
test "yield each row" do
|
32
|
+
csv = "first,second,third\n1,2,3"
|
33
|
+
EasyIO.parse(csv) do |row|
|
34
|
+
assert_equal row[:first], "1"
|
35
|
+
assert_equal row[:second], "2"
|
36
|
+
assert_equal row[:third], "3"
|
38
37
|
end
|
39
38
|
end
|
40
39
|
end
|
metadata
CHANGED
@@ -1,67 +1,48 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: easyio
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 2
|
9
|
-
- 0
|
10
|
-
version: 0.2.0
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.3.0
|
5
|
+
prerelease:
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Steve Eichert
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
name: fastercsv
|
23
|
-
prerelease: false
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
12
|
+
date: 2012-01-04 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: jeweler
|
16
|
+
requirement: &2164537200 !ruby/object:Gem::Requirement
|
25
17
|
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
|
30
|
-
segments:
|
31
|
-
- 1
|
32
|
-
- 5
|
33
|
-
- 0
|
34
|
-
version: 1.5.0
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
35
22
|
type: :runtime
|
36
|
-
version_requirements: *id001
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: aws-s3
|
39
23
|
prerelease: false
|
40
|
-
|
24
|
+
version_requirements: *2164537200
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: aws-s3
|
27
|
+
requirement: &2164534060 !ruby/object:Gem::Requirement
|
41
28
|
none: false
|
42
|
-
requirements:
|
43
|
-
- -
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
hash: 3
|
46
|
-
segments:
|
47
|
-
- 0
|
48
|
-
- 6
|
49
|
-
- 2
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
50
32
|
version: 0.6.2
|
51
33
|
type: :runtime
|
52
|
-
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *2164534060
|
53
36
|
description: A gem for making IO tasks easy (at least for me)
|
54
37
|
email: steve.eichert@gmail.com
|
55
38
|
executables: []
|
56
|
-
|
57
39
|
extensions: []
|
58
|
-
|
59
|
-
extra_rdoc_files:
|
40
|
+
extra_rdoc_files:
|
60
41
|
- LICENSE
|
61
42
|
- README.rdoc
|
62
|
-
files:
|
43
|
+
files:
|
63
44
|
- .document
|
64
|
-
-
|
45
|
+
- Gemfile
|
65
46
|
- LICENSE
|
66
47
|
- README.rdoc
|
67
48
|
- Rakefile
|
@@ -70,40 +51,31 @@ files:
|
|
70
51
|
- lib/easyio.rb
|
71
52
|
- test/helper.rb
|
72
53
|
- test/test_easyio.rb
|
73
|
-
has_rdoc: true
|
74
54
|
homepage: http://github.com/eichert12/easyio
|
75
55
|
licenses: []
|
76
|
-
|
77
56
|
post_install_message:
|
78
|
-
rdoc_options:
|
79
|
-
|
80
|
-
require_paths:
|
57
|
+
rdoc_options: []
|
58
|
+
require_paths:
|
81
59
|
- lib
|
82
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
60
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
83
61
|
none: false
|
84
|
-
requirements:
|
85
|
-
- -
|
86
|
-
- !ruby/object:Gem::Version
|
87
|
-
|
88
|
-
segments:
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
segments:
|
89
67
|
- 0
|
90
|
-
|
91
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
68
|
+
hash: 727100122824216758
|
69
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
92
70
|
none: false
|
93
|
-
requirements:
|
94
|
-
- -
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
|
97
|
-
segments:
|
98
|
-
- 0
|
99
|
-
version: "0"
|
71
|
+
requirements:
|
72
|
+
- - ! '>='
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
100
75
|
requirements: []
|
101
|
-
|
102
76
|
rubyforge_project:
|
103
|
-
rubygems_version: 1.
|
77
|
+
rubygems_version: 1.8.13
|
104
78
|
signing_key:
|
105
79
|
specification_version: 3
|
106
80
|
summary: A gem for making IO tasks easy (at least for me)
|
107
|
-
test_files:
|
108
|
-
- test/helper.rb
|
109
|
-
- test/test_easyio.rb
|
81
|
+
test_files: []
|
data/.gitignore
DELETED