venny 1.0.1 → 1.0.2

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/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.1
1
+ 1.0.2
@@ -17,6 +17,7 @@ class Set
17
17
 
18
18
  def cartesian_product(*enums)
19
19
  raise ArgumentError, 'must supply at least one Enumerable argument' if enums.empty?
20
+ raise ArgumentError, 'all arguments must be enumerable' unless enums.inject(true) { |acc, element| (acc || !element.is_a?(Enumerable)) }
20
21
  enums << self
21
22
  recursive_cartesian_product(*enums)
22
23
  end
@@ -26,12 +27,12 @@ class Set
26
27
  protected
27
28
  def recursive_cartesian_product(*enums)
28
29
  return Set.new([Set.new]) if enums.empty?
29
- raise ArgumentError, 'all arguments must be enumerable' unless enums.inject(true) { |acc, element| (acc || !element.is_a?(Enumerable)) }
30
- enums = enums.map { |element| element.to_a }.sort { |a, b| b.length <=> a.length }
31
30
  combos = Set.new
32
- enums.shift.each do |element|
33
- recursive_cartesian_product(*enums).each do |product|
34
- combos.add(product.add(element))
31
+ first = enums.shift
32
+ subproducts = recursive_cartesian_product(*enums)
33
+ first.each do |element|
34
+ subproducts.each do |product|
35
+ combos.add(product.clone.add(element))
35
36
  end
36
37
  end
37
38
  combos
data/venny.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{venny}
8
- s.version = "1.0.1"
8
+ s.version = "1.0.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Jeremy Holland"]
12
- s.date = %q{2011-04-29}
12
+ s.date = %q{2011-05-03}
13
13
  s.description = %q{Extends the standard library Set object, adding methods for cartesian products, power sets, and complements}
14
14
  s.email = %q{jeremy@jeremypholland.com}
15
15
  s.extra_rdoc_files = [
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 1
7
7
  - 0
8
- - 1
9
- version: 1.0.1
8
+ - 2
9
+ version: 1.0.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Jeremy Holland
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-04-29 00:00:00 -05:00
17
+ date: 2011-05-03 00:00:00 -05:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -113,7 +113,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
113
113
  requirements:
114
114
  - - ">="
115
115
  - !ruby/object:Gem::Version
116
- hash: -4231136223501847886
116
+ hash: -278822628741290833
117
117
  segments:
118
118
  - 0
119
119
  version: "0"