range_math 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,48 @@
1
+ # rcov generated
2
+ coverage
3
+
4
+ # rdoc generated
5
+ rdoc
6
+
7
+ # yard generated
8
+ doc
9
+ .yardoc
10
+
11
+ # bundler
12
+ .bundle
13
+
14
+ # jeweler generated
15
+ pkg
16
+
17
+ # Have editor/IDE/OS specific files you need to ignore? Consider using a global gitignore:
18
+ #
19
+ # * Create a file at ~/.gitignore
20
+ # * Include files you want ignored
21
+ # * Run: git config --global core.excludesfile ~/.gitignore
22
+ #
23
+ # After doing this, these files will be ignored in all your git projects,
24
+ # saving you from having to 'pollute' every project you touch with them
25
+ #
26
+ # Not sure what to needs to be ignored for particular editors/OSes? Here's some ideas to get you started. (Remember, remove the leading # of the line)
27
+ #
28
+ # For MacOS:
29
+ #
30
+ #.DS_Store
31
+
32
+ # For TextMate
33
+ #*.tmproj
34
+ #tmtags
35
+
36
+ # For emacs:
37
+ #*~
38
+ #\#*
39
+ #.\#*
40
+
41
+ # For vim:
42
+ #*.swp
43
+
44
+ # For redcar:
45
+ #.redcar
46
+
47
+ # For rubinius:
48
+ #*.rbc
data/Rakefile CHANGED
@@ -1,53 +1,24 @@
1
- # encoding: utf-8
2
-
3
- require 'rubygems'
4
- require 'bundler'
5
- begin
6
- Bundler.setup(:default, :development)
7
- rescue Bundler::BundlerError => e
8
- $stderr.puts e.message
9
- $stderr.puts "Run `bundle install` to install missing gems"
10
- exit e.status_code
11
- end
12
- require 'rake'
13
-
14
- require 'jeweler'
15
- Jeweler::Tasks.new do |gem|
16
- # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
- gem.name = "range_math"
18
- gem.homepage = "http://github.com/muflax/range_math"
19
- gem.license = "MIT"
20
- gem.summary = %Q{do math on ranges}
21
- gem.description = %Q{use ranges in math expression}
22
- gem.email = "mail@muflax.com"
23
- gem.authors = ["muflax"]
24
- # dependencies defined in Gemfile
1
+ desc "open an irb session preloaded with this library"
2
+ task :console do
3
+ sh "irb -Ilib -rrange_math"
25
4
  end
26
- Jeweler::RubygemsDotOrgTasks.new
27
5
 
28
- require 'rake/testtask'
29
- Rake::TestTask.new(:test) do |test|
30
- test.libs << 'lib' << 'test'
31
- test.pattern = 'test/**/test_*.rb'
32
- test.verbose = true
6
+ desc "build a gem from the gemspec"
7
+ task :build do
8
+ sh "mkdir -p pkg"
9
+ sh "gem build range_math.gemspec"
10
+ sh "mv range_math-*.gem pkg/"
33
11
  end
34
12
 
35
- require 'rcov/rcovtask'
36
- Rcov::RcovTask.new do |test|
37
- test.libs << 'test'
38
- test.pattern = 'test/**/test_*.rb'
39
- test.verbose = true
40
- test.rcov_opts << '--exclude "gems/*"'
13
+ desc "clean pkg"
14
+ task :clean do
15
+ sh "rm -f pkg/*"
41
16
  end
42
17
 
43
- task :default => :test
44
18
 
45
- require 'rdoc/task'
46
- RDoc::Task.new do |rdoc|
47
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
48
-
49
- rdoc.rdoc_dir = 'rdoc'
50
- rdoc.title = "range_math #{version}"
51
- rdoc.rdoc_files.include('README*')
52
- rdoc.rdoc_files.include('lib/**/*.rb')
19
+ desc "install a gem"
20
+ task :install => [:clean, :build] do
21
+ sh "gem install --no-format-executable pkg/range_math-*.gem"
53
22
  end
23
+
24
+ task :default => :install
data/lib/range_math.rb CHANGED
@@ -5,43 +5,23 @@
5
5
 
6
6
  class Range
7
7
  def +(other)
8
- if other.is_a? Range
9
- (self.begin + other.begin)..(self.end + other.end)
10
- elsif other.is_a? Numeric
11
- (self.begin + other)..(self.end + other)
12
- else
13
- raise NoMethodError
14
- end
8
+ pair_or_num :+, other
15
9
  end
16
10
 
17
11
  def -(other)
18
- if other.is_a? Range
19
- (self.begin - other.begin)..(self.end - other.end)
20
- elsif other.is_a? Numeric
21
- (self.begin - other)..(self.end - other)
22
- else
23
- raise NoMethodError
24
- end
12
+ pair_or_num :-, other
25
13
  end
26
14
 
27
15
  def *(other)
28
- if other.is_a? Range
29
- (self.begin * other.begin)..(self.end * other.end)
30
- elsif other.is_a? Numeric
31
- (self.begin * other)..(self.end * other)
32
- else
33
- raise NoMethodError
34
- end
16
+ pair_or_num :*, other
35
17
  end
36
18
 
37
19
  def /(other)
38
- if other.is_a? Range
39
- (self.begin / other.begin.to_f)..(self.end / other.end.to_f)
40
- elsif other.is_a? Numeric
41
- (self.begin / other.to_f)..(self.end / other.to_f)
42
- else
43
- raise NoMethodError
44
- end
20
+ pair_or_num :/, other.to_f
21
+ end
22
+
23
+ def to_f
24
+ (self.begin.to_f..self.end.to_f)
45
25
  end
46
26
 
47
27
  def average
@@ -50,5 +30,29 @@ class Range
50
30
 
51
31
  def coerce(other)
52
32
  return self, other
53
- end
33
+ end
34
+
35
+ def pair_or_num operator, other
36
+ if other.is_a? Range
37
+ calc_pairs operator, other
38
+ elsif other.is_a? Numeric
39
+ calc_pairs operator, (other..other)
40
+ else
41
+ raise NoMethodError
42
+ end
43
+ end
44
+
45
+ def calc_pairs operator, other
46
+ parts_x = [self.begin, self.end]
47
+ parts_y = [other.begin, other.end]
48
+
49
+ results = []
50
+ parts_x.each do |x|
51
+ parts_y.each do |y|
52
+ results << x.send(operator, y)
53
+ end
54
+ end
55
+
56
+ (results.min..results.max)
57
+ end
54
58
  end
data/range_math.gemspec CHANGED
@@ -1,62 +1,17 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
5
-
6
1
  Gem::Specification.new do |s|
7
2
  s.name = "range_math"
8
- s.version = "0.2.0"
3
+ s.version = "0.3.0"
9
4
 
10
5
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
6
  s.authors = ["muflax"]
12
- s.date = "2011-12-04"
13
7
  s.description = "use ranges in math expression"
14
8
  s.email = "mail@muflax.com"
15
9
  s.extra_rdoc_files = [
16
- "LICENSE.txt",
17
10
  "README"
18
11
  ]
19
- s.files = [
20
- ".document",
21
- "Gemfile",
22
- "Gemfile.lock",
23
- "LICENSE.txt",
24
- "README",
25
- "Rakefile",
26
- "VERSION",
27
- "lib/range_math.rb",
28
- "range_math.gemspec",
29
- "test/helper.rb",
30
- "test/test_range_math.rb"
31
- ]
12
+ s.files = `git ls-files`.split("\n")
32
13
  s.homepage = "http://github.com/muflax/range_math"
33
- s.licenses = ["MIT"]
34
14
  s.require_paths = ["lib"]
35
- s.rubygems_version = "1.8.11"
36
15
  s.summary = "do math on ranges"
37
-
38
- if s.respond_to? :specification_version then
39
- s.specification_version = 3
40
-
41
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
42
- s.add_development_dependency(%q<shoulda>, [">= 0"])
43
- s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
44
- s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
45
- s.add_development_dependency(%q<rcov>, [">= 0"])
46
- s.add_development_dependency(%q<rdoc>, [">= 0"])
47
- else
48
- s.add_dependency(%q<shoulda>, [">= 0"])
49
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
50
- s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
51
- s.add_dependency(%q<rcov>, [">= 0"])
52
- s.add_dependency(%q<rdoc>, [">= 0"])
53
- end
54
- else
55
- s.add_dependency(%q<shoulda>, [">= 0"])
56
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
57
- s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
58
- s.add_dependency(%q<rcov>, [">= 0"])
59
- s.add_dependency(%q<rdoc>, [">= 0"])
60
- end
61
16
  end
62
17
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: range_math
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,85 +9,26 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-12-04 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: shoulda
16
- requirement: &9490460 !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
22
- type: :development
23
- prerelease: false
24
- version_requirements: *9490460
25
- - !ruby/object:Gem::Dependency
26
- name: bundler
27
- requirement: &9488420 !ruby/object:Gem::Requirement
28
- none: false
29
- requirements:
30
- - - ~>
31
- - !ruby/object:Gem::Version
32
- version: 1.0.0
33
- type: :development
34
- prerelease: false
35
- version_requirements: *9488420
36
- - !ruby/object:Gem::Dependency
37
- name: jeweler
38
- requirement: &9485580 !ruby/object:Gem::Requirement
39
- none: false
40
- requirements:
41
- - - ~>
42
- - !ruby/object:Gem::Version
43
- version: 1.6.4
44
- type: :development
45
- prerelease: false
46
- version_requirements: *9485580
47
- - !ruby/object:Gem::Dependency
48
- name: rcov
49
- requirement: &9483160 !ruby/object:Gem::Requirement
50
- none: false
51
- requirements:
52
- - - ! '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- type: :development
56
- prerelease: false
57
- version_requirements: *9483160
58
- - !ruby/object:Gem::Dependency
59
- name: rdoc
60
- requirement: &9479460 !ruby/object:Gem::Requirement
61
- none: false
62
- requirements:
63
- - - ! '>='
64
- - !ruby/object:Gem::Version
65
- version: '0'
66
- type: :development
67
- prerelease: false
68
- version_requirements: *9479460
12
+ date: 2012-04-29 00:00:00.000000000 Z
13
+ dependencies: []
69
14
  description: use ranges in math expression
70
15
  email: mail@muflax.com
71
16
  executables: []
72
17
  extensions: []
73
18
  extra_rdoc_files:
74
- - LICENSE.txt
75
19
  - README
76
20
  files:
77
21
  - .document
78
- - Gemfile
79
- - Gemfile.lock
22
+ - .gitignore
80
23
  - LICENSE.txt
81
24
  - README
82
25
  - Rakefile
83
- - VERSION
84
26
  - lib/range_math.rb
85
27
  - range_math.gemspec
86
28
  - test/helper.rb
87
29
  - test/test_range_math.rb
88
30
  homepage: http://github.com/muflax/range_math
89
- licenses:
90
- - MIT
31
+ licenses: []
91
32
  post_install_message:
92
33
  rdoc_options: []
93
34
  require_paths:
@@ -98,9 +39,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
98
39
  - - ! '>='
99
40
  - !ruby/object:Gem::Version
100
41
  version: '0'
101
- segments:
102
- - 0
103
- hash: -3191188953004532935
104
42
  required_rubygems_version: !ruby/object:Gem::Requirement
105
43
  none: false
106
44
  requirements:
@@ -109,7 +47,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
109
47
  version: '0'
110
48
  requirements: []
111
49
  rubyforge_project:
112
- rubygems_version: 1.8.11
50
+ rubygems_version: 1.8.15
113
51
  signing_key:
114
52
  specification_version: 3
115
53
  summary: do math on ranges
data/Gemfile DELETED
@@ -1,14 +0,0 @@
1
- source "http://rubygems.org"
2
- # Add dependencies required to use your gem here.
3
- # Example:
4
- # gem "activesupport", ">= 2.3.5"
5
-
6
- # Add dependencies to develop your gem here.
7
- # Include everything needed to run rake, tests, features, etc.
8
- group :development do
9
- gem "shoulda", ">= 0"
10
- gem "bundler", "~> 1.0.0"
11
- gem "jeweler", "~> 1.6.4"
12
- gem "rcov", ">= 0"
13
- gem "rdoc", ">= 0"
14
- end
data/Gemfile.lock DELETED
@@ -1,24 +0,0 @@
1
- GEM
2
- remote: http://rubygems.org/
3
- specs:
4
- git (1.2.5)
5
- jeweler (1.6.4)
6
- bundler (~> 1.0)
7
- git (>= 1.2.5)
8
- rake
9
- json (1.6.3)
10
- rake (0.9.2.2)
11
- rcov (0.9.11)
12
- rdoc (3.11)
13
- json (~> 1.4)
14
- shoulda (2.11.3)
15
-
16
- PLATFORMS
17
- ruby
18
-
19
- DEPENDENCIES
20
- bundler (~> 1.0.0)
21
- jeweler (~> 1.6.4)
22
- rcov
23
- rdoc
24
- shoulda
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.2.0