combinatorics 0.4.1 → 0.4.3

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,3 +1,21 @@
1
+ ### 0.4.3 / 2012-05-28
2
+
3
+ * Fixed a typo in the gemspec, which incorrectly set
4
+ `required_rubygems_version` to the same value as `required_ruby_version`.
5
+
6
+ ### 0.4.2 / 2012-05-27
7
+
8
+ * Avoid warnings on JRuby by checking for `::Generator` before
9
+ `::Enumerator::Generator` in `combinatorics/generator`.
10
+ * Raise a `NameError` when the `Generator` class cannot be found in
11
+ `combinatorics/generator`.
12
+ * Replaced ore-tasks with
13
+ [rubygems-tasks](https://github.com/postmodern/rubygems-tasks#readme).
14
+
15
+ ### 0.4.1 / 2011-10-15
16
+
17
+ * Fixed a typo in the gemspec.
18
+
1
19
  ### 0.4.0 / 2011-10-15
2
20
 
3
21
  * Added {Math.sigma}.
@@ -1,4 +1,4 @@
1
- Copyright (c) 2010-2011 Hal Brodigan
1
+ Copyright (c) 2010-2012 Hal Brodigan
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Combinatorics
2
2
 
3
- * [Source](http://github.com/postmodern/combinatorics)
4
- * [Issues](http://github.com/postmodern/combinatorics/issues)
3
+ * [Source](https://github.com/postmodern/combinatorics)
4
+ * [Issues](https://github.com/postmodern/combinatorics/issues)
5
5
  * [Documentation](http://rubydoc.info/gems/combinatorics)
6
6
  * [Email](mailto:postmodern.mod3 at gmail.com)
7
7
 
@@ -58,41 +58,6 @@ Power-set:
58
58
  #<Set: {"ab", "cd"}>,
59
59
  #<Set: {"ab", "cd", "ef"}>]
60
60
 
61
- Find the intersecting sub-range between two ranges:
62
-
63
- (1..50) & (20..100)
64
- # => (20..50)
65
-
66
- Enumerate over every sub-range between two ranges:
67
-
68
- (1..5).upto(2..10).to_a
69
- # => [1..5, 1..6, 1..7, 1..8, 1..9, 1..10,
70
- 2..5, 2..6, 2..7, 2..8, 2..9, 2..10]
71
-
72
- List comprehensions:
73
-
74
- require 'combinatorics/list_comprehension'
75
-
76
- [(0..10).step(2),('a'..'c')].comprehension.to_a
77
- # => [[0, "a"],
78
- [0, "b"],
79
- [0, "c"],
80
- [2, "a"],
81
- [2, "b"],
82
- [2, "c"],
83
- [4, "a"],
84
- [4, "b"],
85
- [4, "c"],
86
- [6, "a"],
87
- [6, "b"],
88
- [6, "c"],
89
- [8, "a"],
90
- [8, "b"],
91
- [8, "c"],
92
- [10, "a"],
93
- [10, "b"],
94
- [10, "c"]]
95
-
96
61
  Cartesian products:
97
62
 
98
63
  require 'combinatorics/cartesian_product'
@@ -148,21 +113,54 @@ Permutation cardinality:
148
113
 
149
114
  require 'combinatorics/permutation'
150
115
 
151
- include Combinatorics::Permute
152
-
153
- Combinatorics::Permute::cardinality(128)
116
+ Combinatorics::Permute.cardinality(128)
154
117
  # => 8256
155
118
 
119
+ List comprehensions:
120
+
121
+ require 'combinatorics/list_comprehension'
122
+
123
+ [(0..10).step(2),('a'..'c')].comprehension.to_a
124
+ # => [[0, "a"],
125
+ [0, "b"],
126
+ [0, "c"],
127
+ [2, "a"],
128
+ [2, "b"],
129
+ [2, "c"],
130
+ [4, "a"],
131
+ [4, "b"],
132
+ [4, "c"],
133
+ [6, "a"],
134
+ [6, "b"],
135
+ [6, "c"],
136
+ [8, "a"],
137
+ [8, "b"],
138
+ [8, "c"],
139
+ [10, "a"],
140
+ [10, "b"],
141
+ [10, "c"]]
142
+
143
+ Find the intersecting sub-range between two ranges:
144
+
145
+ (1..50) & (20..100)
146
+ # => (20..50)
147
+
148
+ Enumerate over every sub-range between two ranges:
149
+
150
+ (1..5).upto(2..10).to_a
151
+ # => [1..5, 1..6, 1..7, 1..8, 1..9, 1..10,
152
+ 2..5, 2..6, 2..7, 2..8, 2..9, 2..10]
153
+
156
154
  ## Requirements
157
155
 
158
156
  * [ruby](http://www.ruby-lang.org/) >= 1.8.7
159
157
 
160
158
  ## Install
161
159
 
162
- $ sudo gem install combinatorics
160
+ $ gem install combinatorics
163
161
 
164
162
  ## Copyright
165
163
 
166
- Copyright (c) 2010-2011 Hal Brodigan
164
+ Copyright (c) 2010-2012 Hal Brodigan
167
165
 
168
166
  See {file:LICENSE.txt} for license information.
data/Rakefile CHANGED
@@ -2,13 +2,13 @@ require 'rubygems'
2
2
  require 'rake'
3
3
 
4
4
  begin
5
- gem 'ore-tasks', '~> 0.4'
6
- require 'ore/tasks'
5
+ gem 'rubygems-tasks', '~> 0.1'
6
+ require 'rubygems/tasks'
7
7
 
8
- Ore::Tasks.new
8
+ Gem::Tasks.new
9
9
  rescue LoadError => e
10
10
  warn e.message
11
- warn "Run `gem install ore-tasks` to install 'ore/tasks'."
11
+ warn "Run `gem install rubygems-tasks` to install 'rubygems/tasks'."
12
12
  end
13
13
 
14
14
  begin
@@ -2,126 +2,59 @@
2
2
 
3
3
  require 'yaml'
4
4
 
5
- Gem::Specification.new do |gemspec|
6
- files = if File.directory?('.git')
7
- `git ls-files`.split($/)
8
- elsif File.directory?('.hg')
9
- `hg manifest`.split($/)
10
- elsif File.directory?('.svn')
11
- `svn ls -R`.split($/).select { |path| File.file?(path) }
12
- else
13
- Dir['{**/}{.*,*}'].select { |path| File.file?(path) }
14
- end
5
+ Gem::Specification.new do |gem|
6
+ gemspec = YAML.load_file('gemspec.yml')
15
7
 
16
- filter_files = lambda { |paths|
17
- case paths
18
- when Array
19
- (files & paths)
20
- when String
21
- (files & Dir[paths])
22
- end
23
- }
24
-
25
- version = {
26
- :file => 'lib/combinatorics/version.rb',
27
- :constant => 'Combinatorics::VERSION'
28
- }
29
-
30
- defaults = {
31
- 'name' => File.basename(File.dirname(__FILE__)),
32
- 'files' => files,
33
- 'executables' => filter_files['bin/*'].map { |path| File.basename(path) },
34
- 'test_files' => filter_files['{test/{**/}*_test.rb,spec/{**/}*_spec.rb}'],
35
- 'extra_doc_files' => filter_files['*.{txt,rdoc,md,markdown,tt,textile}'],
36
- }
37
-
38
- metadata = defaults.merge(YAML.load_file('gemspec.yml'))
39
-
40
- gemspec.name = metadata.fetch('name',defaults[:name])
41
- gemspec.version = if metadata['version']
42
- metadata['version']
43
- elsif File.file?(version[:file])
44
- require File.join('.',version[:file])
45
- eval(version[:constant])
46
- end
47
-
48
- gemspec.summary = metadata.fetch('summary',metadata['description'])
49
- gemspec.description = metadata.fetch('description',metadata['summary'])
50
-
51
- case metadata['license']
52
- when Array
53
- gemspec.licenses = metadata['license']
54
- when String
55
- gemspec.license = metadata['license']
56
- end
57
-
58
- case metadata['authors']
59
- when Array
60
- gemspec.authors = metadata['authors']
61
- when String
62
- gemspec.author = metadata['authors']
63
- end
8
+ gem.name = gemspec.fetch('name')
9
+ gem.version = gemspec.fetch('version') do
10
+ lib_dir = File.join(File.dirname(__FILE__),'lib')
11
+ $LOAD_PATH << lib_dir unless $LOAD_PATH.include?(lib_dir)
64
12
 
65
- gemspec.email = metadata['email']
66
- gemspec.homepage = metadata['homepage']
13
+ require 'combinatorics/version'
14
+ Combinatorics::VERSION
15
+ end
67
16
 
68
- case metadata['require_paths']
69
- when Array
70
- gemspec.require_paths = metadata['require_paths']
71
- when String
72
- gemspec.require_path = metadata['require_paths']
73
- end
17
+ gem.summary = gemspec['summary']
18
+ gem.description = gemspec['description']
19
+ gem.licenses = Array(gemspec['license'])
20
+ gem.authors = Array(gemspec['authors'])
21
+ gem.email = gemspec['email']
22
+ gem.homepage = gemspec['homepage']
74
23
 
75
- gemspec.files = filter_files[metadata['files']]
24
+ glob = lambda { |patterns| gem.files & Dir[*patterns] }
76
25
 
77
- gemspec.executables = metadata['executables']
78
- gemspec.extensions = metadata['extensions']
26
+ gem.files = `git ls-files`.split($/)
27
+ gem.files = glob[gemspec['files']] if gemspec['files']
79
28
 
80
- if Gem::VERSION < '1.7.'
81
- gemspec.default_executable = gemspec.executables.first
29
+ gem.executables = gemspec.fetch('executables') do
30
+ glob['bin/*'].map { |path| File.basename(path) }
82
31
  end
32
+ gem.default_executable = gem.executables.first if Gem::VERSION < '1.7.'
83
33
 
84
- gemspec.test_files = filter_files[metadata['test_files']]
85
-
86
- unless gemspec.files.include?('.document')
87
- gemspec.extra_rdoc_files = metadata['extra_doc_files']
88
- end
89
-
90
- gemspec.post_install_message = metadata['post_install_message']
91
- gemspec.requirements = metadata['requirements']
92
-
93
- if gemspec.respond_to?(:required_ruby_version=)
94
- gemspec.required_ruby_version = metadata['required_ruby_version']
95
- end
34
+ gem.extensions = glob[gemspec['extensions'] || 'ext/**/extconf.rb']
35
+ gem.test_files = glob[gemspec['test_files'] || '{test/{**/}*_test.rb']
36
+ gem.extra_rdoc_files = glob[gemspec['extra_doc_files'] || '*.{txt,md}']
96
37
 
97
- if gemspec.respond_to?(:required_rubygems_version=)
98
- gemspec.required_rubygems_version = metadata['required_rubygems_version']
99
- end
38
+ gem.require_paths = Array(gemspec.fetch('require_paths') {
39
+ %w[ext lib].select { |dir| File.directory?(dir) }
40
+ })
100
41
 
101
- parse_versions = lambda { |versions|
102
- case versions
103
- when Array
104
- versions.map { |v| v.to_s }
105
- when String
106
- versions.split(/,\s*/)
107
- end
108
- }
42
+ gem.requirements = gemspec['requirements']
43
+ gem.required_ruby_version = gemspec['required_ruby_version']
44
+ gem.required_rubygems_version = gemspec['required_rubygems_version']
45
+ gem.post_install_message = gemspec['post_install_message']
109
46
 
110
- if metadata['dependencies']
111
- metadata['dependencies'].each do |name,versions|
112
- gemspec.add_dependency(name,parse_versions[versions])
113
- end
114
- end
47
+ split = lambda { |string| string.split(/,\s*/) }
115
48
 
116
- if metadata['runtime_dependencies']
117
- metadata['runtime_dependencies'].each do |name,versions|
118
- gemspec.add_runtime_dependency(name,parse_versions[versions])
49
+ if gemspec['dependencies']
50
+ gemspec['dependencies'].each do |name,versions|
51
+ gem.add_dependency(name,split[versions])
119
52
  end
120
53
  end
121
54
 
122
- if metadata['development_dependencies']
123
- metadata['development_dependencies'].each do |name,versions|
124
- gemspec.add_development_dependency(name,parse_versions[versions])
55
+ if gemspec['development_dependencies']
56
+ gemspec['development_dependencies'].each do |name,versions|
57
+ gem.add_development_dependency(name,split[versions])
125
58
  end
126
59
  end
127
60
  end
@@ -10,12 +10,12 @@ authors:
10
10
  email:
11
11
  - postmodern.mod3@gmail.com
12
12
  - super@manson.vistech.net
13
- homepage: http://github.com/postmodern/combinatorics
13
+ homepage: https://github.com/postmodern/combinatorics#readme
14
14
  has_yard: true
15
15
 
16
16
  required_ruby_version: ">= 1.8.7"
17
17
 
18
18
  development_dependencies:
19
- ore-tasks: ~> 0.4
19
+ rubygems-tasks: ~> 0.1
20
20
  rspec: ~> 2.4
21
21
  yard: ~> 0.7
@@ -113,7 +113,6 @@ module Math
113
113
  Math.pi(r)
114
114
  end
115
115
 
116
-
117
116
  #
118
117
  # Subfactorial function for calculation of derangement cardinalities.
119
118
  #
@@ -1,17 +1,13 @@
1
1
  require 'enumerator'
2
-
3
- begin
4
- require 'generator' # 1.8.7
5
- rescue LoadError
6
- end
2
+ require 'generator' if RUBY_VERSION < '1.9'
7
3
 
8
4
  module Combinatorics
9
5
  # auto-detects the `Generator` class.
10
- Generator = if defined?(::Enumerator::Generator) # 1.9
11
- ::Enumerator::Generator
12
- elsif defined?(::Generator) # 1.8.7
6
+ Generator = if defined?(::Generator) # 1.8.7
13
7
  ::Generator
8
+ elsif defined?(::Enumerator::Generator) # 1.9
9
+ ::Enumerator::Generator
14
10
  else
15
- raise("unable to find the Generator class")
11
+ raise(NameError,"unable to find the Generator class")
16
12
  end
17
13
  end
@@ -1,4 +1,4 @@
1
1
  module Combinatorics
2
2
  # Combinatorics module revision number
3
- VERSION = '0.4.1'
3
+ VERSION = '0.4.3'
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: combinatorics
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,22 +10,27 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2011-10-16 00:00:00.000000000Z
13
+ date: 2012-05-28 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: ore-tasks
17
- requirement: &12746560 !ruby/object:Gem::Requirement
16
+ name: rubygems-tasks
17
+ requirement: !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ~>
21
21
  - !ruby/object:Gem::Version
22
- version: '0.4'
22
+ version: '0.1'
23
23
  type: :development
24
24
  prerelease: false
25
- version_requirements: *12746560
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ~>
29
+ - !ruby/object:Gem::Version
30
+ version: '0.1'
26
31
  - !ruby/object:Gem::Dependency
27
32
  name: rspec
28
- requirement: &12744980 !ruby/object:Gem::Requirement
33
+ requirement: !ruby/object:Gem::Requirement
29
34
  none: false
30
35
  requirements:
31
36
  - - ~>
@@ -33,10 +38,15 @@ dependencies:
33
38
  version: '2.4'
34
39
  type: :development
35
40
  prerelease: false
36
- version_requirements: *12744980
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ~>
45
+ - !ruby/object:Gem::Version
46
+ version: '2.4'
37
47
  - !ruby/object:Gem::Dependency
38
48
  name: yard
39
- requirement: &12743140 !ruby/object:Gem::Requirement
49
+ requirement: !ruby/object:Gem::Requirement
40
50
  none: false
41
51
  requirements:
42
52
  - - ~>
@@ -44,14 +54,23 @@ dependencies:
44
54
  version: '0.7'
45
55
  type: :development
46
56
  prerelease: false
47
- version_requirements: *12743140
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ~>
61
+ - !ruby/object:Gem::Version
62
+ version: '0.7'
48
63
  description: A collection of modules and methods for performing Combinatoric calculations.
49
64
  email:
50
65
  - postmodern.mod3@gmail.com
51
66
  - super@manson.vistech.net
52
67
  executables: []
53
68
  extensions: []
54
- extra_rdoc_files: []
69
+ extra_rdoc_files:
70
+ - Benchmarks.md
71
+ - ChangeLog.md
72
+ - LICENSE.txt
73
+ - README.md
55
74
  files:
56
75
  - .document
57
76
  - .gemtest
@@ -135,7 +154,7 @@ files:
135
154
  - spec/power_set/mixin_examples.rb
136
155
  - spec/power_set/set_spec.rb
137
156
  - spec/spec_helper.rb
138
- homepage: http://github.com/postmodern/combinatorics
157
+ homepage: https://github.com/postmodern/combinatorics#readme
139
158
  licenses:
140
159
  - MIT
141
160
  post_install_message:
@@ -156,28 +175,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
156
175
  version: '0'
157
176
  requirements: []
158
177
  rubyforge_project:
159
- rubygems_version: 1.8.10
178
+ rubygems_version: 1.8.24
160
179
  signing_key:
161
180
  specification_version: 3
162
181
  summary: Bringing (more) Combinatorics to Ruby
163
- test_files:
164
- - spec/cartesian_product/array_spec.rb
165
- - spec/cartesian_product/cardinality_spec.rb
166
- - spec/cartesian_product/set_spec.rb
167
- - spec/choose/array_spec.rb
168
- - spec/choose/cardinality_spec.rb
169
- - spec/choose/set_spec.rb
170
- - spec/combinatorics_spec.rb
171
- - spec/derange/array_spec.rb
172
- - spec/derange/cardinality_spec.rb
173
- - spec/enumerator_spec.rb
174
- - spec/extensions/math_spec.rb
175
- - spec/extensions/range_spec.rb
176
- - spec/generator_spec.rb
177
- - spec/list_comprehension_spec.rb
178
- - spec/permute/array_spec.rb
179
- - spec/permute/cardinality_spec.rb
180
- - spec/permute/set_spec.rb
181
- - spec/power_set/array_spec.rb
182
- - spec/power_set/cardinality_spec.rb
183
- - spec/power_set/set_spec.rb
182
+ test_files: []