combinatorics 0.4.1 → 0.4.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: []