tabular_data 0.0.2 → 0.0.21

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -18,12 +18,12 @@ Or install it yourself as:
18
18
 
19
19
  ## Usage
20
20
 
21
-
22
21
  ```ruby
23
22
  class Person
24
- attr_accessor :name, :age
25
-
23
+
26
24
  ATTRIBUTES = [:name, :age]
25
+
26
+ attr_accessor *ATTRIBUTES
27
27
  end
28
28
 
29
29
  reader = TabularData::Reader.new(Person::ATTRIBUTES)
@@ -34,6 +34,19 @@ person.name
34
34
 
35
35
  person.age
36
36
  => "23"
37
+
38
+ person = reader.read(Person.new, "Marcos;23") do |attribute, value|
39
+ return case attribute
40
+ when :name then value.upcase
41
+ when :age then value.to_i
42
+ end
43
+ end
44
+
45
+ person.name
46
+ => "MARCOS"
47
+
48
+ person.age
49
+ => 23
37
50
  ```
38
51
 
39
52
  ### Changing strategies
@@ -79,9 +92,9 @@ person.age
79
92
  ### Useful methods
80
93
 
81
94
  ```ruby
82
- people = TabularData.parse_csv("people_data.csv", Person::ATTRIBUTES, lambda{ Person.new })
95
+ people = TabularData.parse_csv("people_data.csv", Person::ATTRIBUTES, Person.method(:new))
83
96
 
84
- people = TabularData.parse_lines("Marcos;23\nFelipe;25", Person::ATTRIBUTES, lambda{ Person.new })
97
+ people = TabularData.parse_lines("Marcos;23\nFelipe;25", Person::ATTRIBUTES, Person.method(:new))
85
98
  ```
86
99
 
87
100
  ## Contributing
data/lib/tabular_data.rb CHANGED
@@ -20,10 +20,11 @@ module TabularData
20
20
  module Strategies
21
21
  class ReaderStrategy
22
22
 
23
- def call(context, attributes_to_parse, attributes)
23
+ def call(context, attributes_to_parse, attributes, &block)
24
+ block = lambda{ |attribute, value| value } unless block_given?
24
25
  attributes_to_parse = parse_attributes(attributes_to_parse)
25
26
  attributes.each_with_index do |attribute, i|
26
- context.send "#{attribute}=", attributes_to_parse[i]
27
+ context.send "#{attribute}=", block.call(attribute, attributes_to_parse[i])
27
28
  end
28
29
  end
29
30
 
@@ -79,8 +80,8 @@ module TabularData
79
80
  @attributes = attributes
80
81
  end
81
82
 
82
- def read(entry, attributes_to_parse)
83
- strategy.call(entry, attributes_to_parse, @attributes)
83
+ def read(entry, attributes_to_parse, &block)
84
+ strategy.call(entry, attributes_to_parse, @attributes, &block)
84
85
  entry
85
86
  end
86
87
 
@@ -1,3 +1,3 @@
1
1
  module TabularData
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.21"
3
3
  end
@@ -81,6 +81,18 @@ class TestEntry < Test::Unit::TestCase
81
81
  def test_default_strategy
82
82
  @reader.read(@entry, "first;second")
83
83
  assert_equal "first", @entry.a
84
- assert_equal "second", @entry.b
84
+ assert_equal "second", @entry.b
85
+ end
86
+
87
+ def test_process_attributes_callback
88
+ @reader.read(@entry, "first;2") do |attribute, value|
89
+ return case attribute
90
+ when :first then value.upcase
91
+ when :second then value.to_i
92
+ end
93
+ end
94
+
95
+ assert_equal "FIRST", @entry.a
96
+ assert_equal 2, @entry.b
85
97
  end
86
98
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tabular_data
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.21
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-30 00:00:00.000000000Z
12
+ date: 2012-07-01 00:00:00.000000000Z
13
13
  dependencies: []
14
14
  description: A library for parsing tabular data.
15
15
  email: