nutella 0.2 → 0.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.
data/README.md CHANGED
@@ -3,7 +3,8 @@
3
3
  This library is my personal collection of Ruby utilities, mainly core
4
4
  extensions.
5
5
 
6
- * [RubyGems](https://rubygems.org/gems/nutella)
6
+ * [RubyGems Release Page](https://rubygems.org/gems/nutella)
7
+ * [Documentation on RubyDoc](http://rubydoc.info/github/gbchaosmaster/nutella/master/frames)
7
8
 
8
9
  ## Installation
9
10
 
@@ -0,0 +1,32 @@
1
+ class Integer
2
+ # Check whether the integer is evenly divisible by all of the arguments.
3
+ #
4
+ # @example Check if some numbers are evenly divisible by 5
5
+ # 4.multiple_of? 5 # => false
6
+ # 30.multiple_of? 5 # => true
7
+ #
8
+ # @example Check if some numbers are evenly divisible by both 4 and 7
9
+ # 10.multiple_of? 4, 7 # => false
10
+ # 56.multiple_of? 4, 7 # => true
11
+ #
12
+ # @param [*Integer] nums the integer(s) to check against
13
+ # @return [Boolean] whether or not the integer is evenly divisible by all
14
+ # arguments
15
+ def multiple_of?(*nums)
16
+ nums.all? { |n| (!n.zero? && self % n == 0) || zero? }
17
+ end
18
+ alias_method :divisible_by?, :multiple_of?
19
+
20
+ # Check whether the integer is evenly divisible by any of the arguments.
21
+ #
22
+ # @example {Project Euler #1}[http://projecteuler.net/problem=1] solution using Nutella
23
+ # (1...1000).select { |n| n.multiple_of_any?(3, 5) }.sum
24
+ #
25
+ # @param [*Integer] nums the integer(s) to check against
26
+ # @return [Boolean] whether or not the integer is evenly divisible by any
27
+ # arguments
28
+ def multiple_of_any?(*nums)
29
+ nums.any? { |n| multiple_of? n }
30
+ end
31
+ alias_method :divisible_by_any?, :multiple_of_any?
32
+ end
@@ -1,4 +1,4 @@
1
1
  module Nutella
2
2
  # The current version of Nutella.
3
- VERSION = "0.2"
3
+ VERSION = "0.3"
4
4
  end
@@ -0,0 +1,74 @@
1
+ require "spec_helper"
2
+ require "nutella/core_ext/integer"
3
+
4
+ describe Integer do
5
+ describe "aliases" do
6
+ test_alias Integer, :divisible_by?, :multiple_of?
7
+ test_alias Integer, :divisible_by_any?, :multiple_of_any?
8
+ end
9
+
10
+ describe "#multiple_of?" do
11
+ it "should return true if the number is evenly divisible" do
12
+ 5.multiple_of?(5).should be_true
13
+ 15.multiple_of?(5).should be_true
14
+ 10.multiple_of?(2).should be_true
15
+ 6000.multiple_of?(6).should be_true
16
+ end
17
+
18
+ it "should return false if the number is not evenly divisible" do
19
+ 20.multiple_of?(7).should be_false
20
+ 4.multiple_of?(3).should be_false
21
+ 5.multiple_of?(15).should be_false
22
+ 100.multiple_of?(3).should be_false
23
+ end
24
+
25
+ context "when passing in zero" do
26
+ it "should return false if one tries to divide by zero" do
27
+ 20.multiple_of?(0).should be_false
28
+ 30.multiple_of?(0).should be_false
29
+ end
30
+
31
+ it "should allow zero to go into zero" do
32
+ 0.multiple_of?(0).should be_true
33
+ end
34
+ end
35
+
36
+ context "with multiple arguments" do
37
+ it "should return true if evenly divisible by all arguments" do
38
+ 15.multiple_of?(3, 15).should be_true
39
+ 100.multiple_of?(2, 5, 25).should be_true
40
+ 0.multiple_of?(0, 1, 2).should be_true
41
+ end
42
+
43
+ it "should return false if evenly divisible by only some arguments" do
44
+ 15.multiple_of?(2, 3).should be_false
45
+ 12.multiple_of?(3, 4, 6, 8).should be_false
46
+ 10.multiple_of?(0, 5).should be_false
47
+ end
48
+
49
+ it "should return false if evenly divisible by none of the arguments" do
50
+ 6.multiple_of?(4, 5).should be_false
51
+ 17.multiple_of?(2, 4).should be_false
52
+ end
53
+ end
54
+ end
55
+
56
+ describe "#multiple_of_any?" do
57
+ it "should return true if evenly divisible by all arguments" do
58
+ 15.multiple_of_any?(3, 15).should be_true
59
+ 100.multiple_of_any?(2, 5, 25).should be_true
60
+ 0.multiple_of_any?(0, 1, 2).should be_true
61
+ end
62
+
63
+ it "should return true if evenly divisible by only some arguments" do
64
+ 15.multiple_of_any?(2, 3).should be_true
65
+ 12.multiple_of_any?(3, 4, 6, 8).should be_true
66
+ 10.multiple_of_any?(0, 5).should be_true
67
+ end
68
+
69
+ it "should return false if evenly divisible by none of the arguments" do
70
+ 6.multiple_of_any?(4, 5).should be_false
71
+ 17.multiple_of_any?(2, 4).should be_false
72
+ end
73
+ end
74
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nutella
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.2'
4
+ version: '0.3'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-29 00:00:00.000000000 Z
12
+ date: 2012-09-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -100,11 +100,13 @@ files:
100
100
  - lib/nutella.rb
101
101
  - lib/nutella/version.rb
102
102
  - lib/nutella/core_ext/string.rb
103
+ - lib/nutella/core_ext/integer.rb
103
104
  - lib/nutella/core_ext/hash.rb
104
105
  - lib/nutella/core_ext/enumerable.rb
105
106
  - lib/nutella/core_ext.rb
106
107
  - spec/nutella/core_ext/hash_spec.rb
107
108
  - spec/nutella/core_ext/enumerable_spec.rb
109
+ - spec/nutella/core_ext/integer_spec.rb
108
110
  - spec/nutella/core_ext/string_spec.rb
109
111
  - spec/spec_helper.rb
110
112
  - .rspec
@@ -133,7 +135,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
133
135
  version: '0'
134
136
  segments:
135
137
  - 0
136
- hash: 1979489363505298404
138
+ hash: 1233150412608386870
137
139
  requirements: []
138
140
  rubyforge_project:
139
141
  rubygems_version: 1.8.24
@@ -143,6 +145,7 @@ summary: Spread some Nutella on Ruby to sweeten up its functionality.
143
145
  test_files:
144
146
  - spec/nutella/core_ext/hash_spec.rb
145
147
  - spec/nutella/core_ext/enumerable_spec.rb
148
+ - spec/nutella/core_ext/integer_spec.rb
146
149
  - spec/nutella/core_ext/string_spec.rb
147
150
  - spec/spec_helper.rb
148
151
  has_rdoc: