map_by_method 0.4.1 → 0.5.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.
@@ -1,8 +1,8 @@
1
1
  module MapByMethod #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
- MINOR = 4
5
- TINY = 1
4
+ MINOR = 5
5
+ TINY = 0
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
data/lib/map_by_method.rb CHANGED
@@ -11,7 +11,13 @@ module MapByMethod
11
11
  re = /(map|collect|select|each|reject)(_by)?_([\\w\\_]+\\??)/
12
12
  if (match = method.to_s.match(re))
13
13
  iterator, callmethod = match[1], match[3]
14
- return self.send(iterator) {|item| item.send callmethod}
14
+ callmethods = callmethod.split('_and_')
15
+ result = callmethods.collect do |callmethod|
16
+ self.send(iterator) {|item| item.send callmethod}
17
+ end
18
+ return callmethods.length == 1 ?
19
+ result.first :
20
+ result.transpose
15
21
  end
16
22
  return self.map {|item| item.send method.to_s.singularize.to_sym}
17
23
  rescue NoMethodError
@@ -0,0 +1,23 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+ require 'ostruct'
3
+
4
+ class MapByMethodTest < Test::Unit::TestCase
5
+
6
+ def setup
7
+ @data = [
8
+ OpenStruct.new(:name => 'Dr Nic', :amount => 300),
9
+ OpenStruct.new(:name => 'Banjo', :amount => 500)
10
+ ]
11
+ end
12
+
13
+ def test_map_normal
14
+ assert_equal ['Dr Nic','Banjo'], @data.map_name
15
+ assert_equal [300,500], @data.map_amount
16
+ end
17
+
18
+ def test_map_ands
19
+ assert_equal [['Dr Nic',300],['Banjo',500]], @data.map_name_and_amount
20
+ assert_equal [[300,'Dr Nic'],[500,'Banjo']], @data.map_amount_and_name
21
+ end
22
+
23
+ end
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: map_by_method
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.4.1
7
- date: 2006-10-18 00:00:00 +02:00
6
+ version: 0.5.0
7
+ date: 2006-10-26 00:00:00 +02:00
8
8
  summary: Replacement for Symbol.to_proc which is much cleaner and prettier
9
9
  require_paths:
10
10
  - lib
@@ -32,10 +32,11 @@ files:
32
32
  - CHANGELOG
33
33
  - Rakefile
34
34
  - test/all_tests.rb
35
- - test/test_helper.rb
36
35
  - test/map_by_method_test.rb
37
- - lib/map_by_method.rb
36
+ - test/multiple_methods_test.rb
37
+ - test/test_helper.rb
38
38
  - lib/map_by_method
39
+ - lib/map_by_method.rb
39
40
  - lib/map_by_method/version.rb
40
41
  test_files: []
41
42