sheet_mapper 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -92,7 +92,10 @@ collection.cell(1, 2) => "foo"
92
92
 
93
93
  ## Contributors
94
94
 
95
- SheetMapper was created by [Nathan Esquenazi](http://github.com/nesquena) at Miso in 2012.
95
+ SheetMapper was created by [Nathan Esquenazi](http://github.com/nesquena) at Miso in 2012. The following users
96
+ contributed to the project:
97
+
98
+ * (Derek Lindahl)[https://github.com/dlindahl] - Added simple delegation to collections
96
99
 
97
100
  ## Tasks
98
101
 
@@ -1,7 +1,9 @@
1
+ require 'delegate'
2
+
1
3
  module SheetMapper
2
4
  class CollectionNotFound < StandardError; end
3
5
 
4
- class Collection
6
+ class Collection < SimpleDelegator
5
7
  attr_reader :records, :worksheet
6
8
 
7
9
  # spreadsheet is a SheetMapper::Spreadsheet
@@ -13,12 +15,6 @@ module SheetMapper
13
15
  @records = process_records!
14
16
  end
15
17
 
16
- # Each block for every mapped record
17
- # @collection.each { |m| ...mapped obj... }
18
- def each(&block)
19
- records.each(&block)
20
- end
21
-
22
18
  # Returns an array of mapped records
23
19
  # @collection.rows => [<SheetMapper::Base>, ...]
24
20
  def rows
@@ -45,6 +41,10 @@ module SheetMapper
45
41
  @records = process_records!
46
42
  end
47
43
 
44
+ def __getobj__
45
+ @records
46
+ end
47
+
48
48
  protected
49
49
 
50
50
  # Converts all valid raw data hashes into mapped records
@@ -1,3 +1,3 @@
1
1
  module SheetMapper
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
data/test/base_test.rb CHANGED
@@ -43,7 +43,7 @@ describe "Base" do
43
43
  assert_equal 42, @test.age
44
44
  assert_equal "Red", @test.color
45
45
  end
46
- end # attributes
46
+ end # attribute methods
47
47
 
48
48
  context "for assignment of attributes" do
49
49
  setup do
@@ -56,7 +56,20 @@ describe "Base" do
56
56
  assert_equal 23, @test[:age]
57
57
  assert_equal "Black", @test[:color]
58
58
  end
59
- end
59
+ end # assignment of attributes
60
+
61
+ context "for attributes method" do
62
+ setup do
63
+ @test = TestBase.new(1, @data)
64
+ end
65
+
66
+ should "return attributes hash" do
67
+ hash = @test.attributes
68
+ assert_equal "BOB", hash[:name]
69
+ assert_equal 42, hash[:age]
70
+ assert_equal "Red", hash[:color]
71
+ end
72
+ end # attributes method
60
73
 
61
74
  context "for accessing attribute" do
62
75
  setup do
@@ -33,20 +33,18 @@ describe "Collection" do
33
33
  end
34
34
  end # worksheet
35
35
 
36
- context "for each method" do
37
- setup do
36
+ context "Enumerability" do
37
+ subject do
38
38
  @collection = SheetMapper::Collection.new(@spreadsheet, @worksheet)
39
39
  end
40
40
 
41
- should "support iterating each mapped row" do
42
- rows = []
43
- @collection.each { |c| rows << c }
44
- assert_equal 3, rows.size
45
- assert_equal ["Bob", 21], rows[0].tuple
46
- assert_equal ["Susan", 34], rows[1].tuple
47
- assert_equal ["Joey", 67], rows[2].tuple
41
+ should "behave like an Enumerable" do
42
+ assert_equal subject.first, subject.records.first
43
+ assert subject.respond_to?(:each)
44
+ assert subject.respond_to?(:find)
45
+ assert subject.respond_to?(:map)
48
46
  end
49
- end # each
47
+ end # enum
50
48
 
51
49
  context "for rows method" do
52
50
  setup do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sheet_mapper
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 31
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 1
10
- version: 0.1.1
9
+ - 2
10
+ version: 0.1.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Nathan Esquenazi
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-05-24 00:00:00 Z
18
+ date: 2012-06-12 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: google-spreadsheet-ruby