finishing_moves 0.4.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -1
- data/Rakefile +16 -7
- data/lib/finishing_moves/numeric.rb +23 -0
- data/lib/finishing_moves/version.rb +1 -1
- data/spec/numeric_spec.rb +101 -0
- metadata +4 -4
- data/lib/finishing_moves/fixnum.rb +0 -20
- data/spec/fixnum_spec.rb +0 -43
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dcac065bb1179f4a20504dfa28a865c8dabd537d
|
4
|
+
data.tar.gz: 69dcdfb5bc2d249cc69cf59feb5ea8abd02ee22a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 94dc40dac77c92b1d1f046c309d3c04e7a7e50a3b7bd173906ad39be08d4a39b68e501a53d34d2a097ef79c5157753f61b05a71c06009c48e36a199c5ff10c64
|
7
|
+
data.tar.gz: 6886af0eda4b7aa7cb864d740744518be9f50930b9b775e871397ee678f120a1b4bbd8469c51ebaf07280652b0ce97452560149fded283be37e46f054775cd6a
|
data/README.md
CHANGED
@@ -36,10 +36,12 @@ Tested against **`2.0.0` and above**. Probably works in `1.9.3`.
|
|
36
36
|
- [`Hash#delete!`](https://github.com/forgecrafted/finishing_moves/wiki/Hash#hashdelete)
|
37
37
|
- [`Hash#delete_each`](https://github.com/forgecrafted/finishing_moves/wiki/Hash#hashdelete_each)
|
38
38
|
- [`Hash#delete_each!`](https://github.com/forgecrafted/finishing_moves/wiki/Hash#hashdelete_each-1)
|
39
|
-
- [`Integer#length`](https://github.com/forgecrafted/finishing_moves/wiki/
|
39
|
+
- [`Integer#length`](https://github.com/forgecrafted/finishing_moves/wiki/Numeric#integerlength)
|
40
40
|
- [`Kernel#nil_chain`](https://github.com/forgecrafted/finishing_moves/wiki/Kernel#kernelnil_chain) :boom:
|
41
41
|
- [`Kernel#cascade`](https://github.com/forgecrafted/finishing_moves/wiki/Kernel#kernelcascade)
|
42
42
|
- [`Kernel#class_exists?`](https://github.com/forgecrafted/finishing_moves/wiki/Kernel#kernelclass_exists)
|
43
|
+
- [`Numeric#add_percent`](https://github.com/forgecrafted/finishing_moves/wiki/Numeric#numericadd_percent)
|
44
|
+
- [`Numeric#subtract_percent`](https://github.com/forgecrafted/finishing_moves/wiki/Numeric#numericsubtract_percent)
|
43
45
|
- [`Object#same_as`](https://github.com/forgecrafted/finishing_moves/wiki/Object#objectsame_as)
|
44
46
|
- [`Object#not_nil?`](https://github.com/forgecrafted/finishing_moves/wiki/Object#objectnot_nil)
|
45
47
|
- [`Object#is_an?`](https://github.com/forgecrafted/finishing_moves/wiki/Object#objectis_an)
|
data/Rakefile
CHANGED
@@ -1,15 +1,24 @@
|
|
1
|
+
|
1
2
|
desc "Open an irb session preloaded with this library"
|
2
3
|
task :console do
|
3
4
|
sh "irb -rubygems -I lib -r finishing_moves.rb"
|
4
5
|
end
|
5
6
|
task :c => :console
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
8
|
+
namespace :gem do
|
9
|
+
desc "Connect to RubyGems.org account"
|
10
|
+
task :auth do
|
11
|
+
sh "curl -u forgecrafted https://rubygems.org/api/v1/api_key.yaml > ~/.gem/credentials; chmod 0600 ~/.gem/credentials"
|
12
|
+
end
|
13
|
+
|
14
|
+
desc "Build the gem according to gemspec"
|
15
|
+
task :build do
|
16
|
+
sh "gem build finishing_moves.gemspec"
|
17
|
+
end
|
11
18
|
|
12
|
-
|
13
|
-
|
14
|
-
|
19
|
+
require "./lib/finishing_moves/version"
|
20
|
+
desc "Push the gem to RubyGems.org"
|
21
|
+
task :push do
|
22
|
+
sh "gem push finishing_moves-#{FinishingMoves::VERSION}.gem"
|
23
|
+
end
|
15
24
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
class Numeric
|
2
|
+
def length
|
3
|
+
raise ArgumentError.new("Cannot get length: \"#{self}\" is not an integer")
|
4
|
+
end
|
5
|
+
alias_method :digits, :length
|
6
|
+
|
7
|
+
def subtract_percent(percent)
|
8
|
+
self.to_f * ( ( 100.0 - percent.to_f ) / 100.0 )
|
9
|
+
end
|
10
|
+
alias_method :percentage_off, :subtract_percent
|
11
|
+
|
12
|
+
def add_percent(percent)
|
13
|
+
self.to_f + ( self.to_f * ( percent.to_f / 100.0 ) )
|
14
|
+
end
|
15
|
+
alias_method :markup_by_percent, :add_percent
|
16
|
+
end
|
17
|
+
|
18
|
+
class Integer
|
19
|
+
def length
|
20
|
+
Math.log10(self.abs).to_i + 1
|
21
|
+
end
|
22
|
+
alias_method :digits, :length
|
23
|
+
end
|
@@ -0,0 +1,101 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Numeric methods" do
|
4
|
+
|
5
|
+
it "Fixnum#length" do
|
6
|
+
expect(1.length).to eq 1
|
7
|
+
expect(5.length).to eq 1
|
8
|
+
expect(9.length).to eq 1
|
9
|
+
expect(90.length).to eq 2
|
10
|
+
expect(900.length).to eq 3
|
11
|
+
expect(9000.length).to eq 4
|
12
|
+
expect(-9000.length).to eq 4
|
13
|
+
# alias
|
14
|
+
expect(-9000.digits).to eq 4
|
15
|
+
end
|
16
|
+
|
17
|
+
it "Bignum#length" do
|
18
|
+
expect(12356469787881584554556.length).to eq 23
|
19
|
+
expect(-12356469787881584554556.length).to eq 23
|
20
|
+
# alias
|
21
|
+
expect(-12356469787881584554556.digits).to eq 23
|
22
|
+
end
|
23
|
+
|
24
|
+
it "Float#length" do
|
25
|
+
expect{ 0.0.length }.to raise_error(ArgumentError)
|
26
|
+
expect{ 1.0.length }.to raise_error(ArgumentError)
|
27
|
+
expect{ -1.0.length }.to raise_error(ArgumentError)
|
28
|
+
expect{ 3.14.length }.to raise_error(ArgumentError)
|
29
|
+
expect{ 12356469.987.length }.to raise_error(ArgumentError)
|
30
|
+
# alias
|
31
|
+
expect{ 12356469.987.digits }.to raise_error(ArgumentError)
|
32
|
+
end
|
33
|
+
|
34
|
+
it "BigDecimal#length" do
|
35
|
+
expect{ 1265437718438866624512.123.length }.to raise_error(ArgumentError)
|
36
|
+
expect{ -1265437718438866624512.123.length }.to raise_error(ArgumentError)
|
37
|
+
expect{ 0.9999999999999062.length }.to raise_error(ArgumentError)
|
38
|
+
expect{ -0.9999999999999062.length }.to raise_error(ArgumentError)
|
39
|
+
# alias
|
40
|
+
expect{ -0.9999999999999062.digits }.to raise_error(ArgumentError)
|
41
|
+
end
|
42
|
+
|
43
|
+
it "Fixnum#subtract_percent" do
|
44
|
+
expect(1.subtract_percent(10)).to eq 0.9
|
45
|
+
expect(10.subtract_percent(10)).to eq 9.0
|
46
|
+
expect(25.subtract_percent(5)).to eq 23.75
|
47
|
+
expect(76.subtract_percent(40)).to eq 45.6
|
48
|
+
expect(76.percentage_off(40)).to eq 45.6
|
49
|
+
expect(98786.percentage_off(100)).to eq 0
|
50
|
+
end
|
51
|
+
|
52
|
+
it "Bignum#subtract_percent" do
|
53
|
+
expect(12356469787881584554556.subtract_percent(10)).to eq 1.1120822809093428e+22
|
54
|
+
expect(12356469787881584554556.subtract_percent(99)).to eq 1.2356469787881585e+20
|
55
|
+
expect(12356469787881584554556.percentage_off(99.99999)).to eq 1235646979180369.8
|
56
|
+
end
|
57
|
+
|
58
|
+
it "Float#subtract_percent" do
|
59
|
+
expect(1.0.subtract_percent(10)).to eq 0.9
|
60
|
+
expect(10.4.subtract_percent(10)).to eq 9.360000000000001
|
61
|
+
expect(25.2.subtract_percent(5)).to eq 23.939999999999998
|
62
|
+
expect(76.6.subtract_percent(40)).to eq 45.959999999999994
|
63
|
+
expect(1.0.percentage_off(10)).to eq 0.9
|
64
|
+
end
|
65
|
+
|
66
|
+
it "BigDecimal#subtract_percent" do
|
67
|
+
expect(12654377184.123123.subtract_percent(10)).to eq 11388939465.710812
|
68
|
+
expect(123.129405.subtract_percent(25)).to eq 92.34705375
|
69
|
+
expect(123.129405.percentage_off(25)).to eq 92.34705375
|
70
|
+
end
|
71
|
+
|
72
|
+
|
73
|
+
it "Fixnum#add_percent" do
|
74
|
+
expect(1.add_percent(10)).to eq 1.1
|
75
|
+
expect(10.add_percent(10)).to eq 11.0
|
76
|
+
expect(25.add_percent(5)).to eq 26.25
|
77
|
+
expect(76.add_percent(40)).to eq 106.4
|
78
|
+
expect(76.markup_by_percent(40)).to eq 106.4
|
79
|
+
expect(200.markup_by_percent(100)).to eq 400
|
80
|
+
end
|
81
|
+
|
82
|
+
it "Bignum#add_percent" do
|
83
|
+
expect(12356469787881584554556.add_percent(10)).to eq 1.3592116766669745e+22
|
84
|
+
expect(12356469787881584554556.markup_by_percent(10)).to eq 1.3592116766669745e+22
|
85
|
+
end
|
86
|
+
|
87
|
+
it "Float#add_percent" do
|
88
|
+
expect(1.5.add_percent(100)).to eq 3.0
|
89
|
+
expect(10.4.add_percent(10)).to eq 11.440000000000001
|
90
|
+
expect(25.2.add_percent(5)).to eq 26.46
|
91
|
+
expect(76.6.add_percent(40)).to eq 107.24
|
92
|
+
expect(1.5.markup_by_percent(100)).to eq 3.0
|
93
|
+
end
|
94
|
+
|
95
|
+
it "BigDecimal#add_percent" do
|
96
|
+
expect(12654377184.123123.add_percent(10)).to eq 13919814902.535435
|
97
|
+
expect(123.129405.add_percent(25)).to eq 153.91175625
|
98
|
+
expect(123.129405.markup_by_percent(25)).to eq 153.91175625
|
99
|
+
end
|
100
|
+
|
101
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: finishing_moves
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Frank Koehl
|
@@ -103,9 +103,9 @@ files:
|
|
103
103
|
- lib/finishing_moves/array.rb
|
104
104
|
- lib/finishing_moves/enumerable.rb
|
105
105
|
- lib/finishing_moves/fiscal_logic.rb
|
106
|
-
- lib/finishing_moves/fixnum.rb
|
107
106
|
- lib/finishing_moves/hash.rb
|
108
107
|
- lib/finishing_moves/kernel.rb
|
108
|
+
- lib/finishing_moves/numeric.rb
|
109
109
|
- lib/finishing_moves/object.rb
|
110
110
|
- lib/finishing_moves/string.rb
|
111
111
|
- lib/finishing_moves/to_bool.rb
|
@@ -114,9 +114,9 @@ files:
|
|
114
114
|
- spec/array_spec.rb
|
115
115
|
- spec/enumerable_spec.rb
|
116
116
|
- spec/fiscal_logic_spec.rb
|
117
|
-
- spec/fixnum_spec.rb
|
118
117
|
- spec/hash_spec.rb
|
119
118
|
- spec/kernel_spec.rb
|
119
|
+
- spec/numeric_spec.rb
|
120
120
|
- spec/object_spec.rb
|
121
121
|
- spec/spec_helper.rb
|
122
122
|
- spec/string_spec.rb
|
@@ -160,9 +160,9 @@ test_files:
|
|
160
160
|
- spec/array_spec.rb
|
161
161
|
- spec/enumerable_spec.rb
|
162
162
|
- spec/fiscal_logic_spec.rb
|
163
|
-
- spec/fixnum_spec.rb
|
164
163
|
- spec/hash_spec.rb
|
165
164
|
- spec/kernel_spec.rb
|
165
|
+
- spec/numeric_spec.rb
|
166
166
|
- spec/object_spec.rb
|
167
167
|
- spec/spec_helper.rb
|
168
168
|
- spec/string_spec.rb
|
@@ -1,20 +0,0 @@
|
|
1
|
-
class Integer
|
2
|
-
def length
|
3
|
-
Math.log10(self.abs).to_i + 1
|
4
|
-
end
|
5
|
-
alias_method :digits, :length
|
6
|
-
end
|
7
|
-
|
8
|
-
class Float
|
9
|
-
def length
|
10
|
-
raise ArgumentError.new("Cannot get length: \"#{self}\" is not an integer")
|
11
|
-
end
|
12
|
-
alias_method :digits, :length
|
13
|
-
end
|
14
|
-
|
15
|
-
class BigDecimal
|
16
|
-
def length
|
17
|
-
raise ArgumentError.new("Cannot get length: \"#{self}\" is not an integer")
|
18
|
-
end
|
19
|
-
alias_method :digits, :length
|
20
|
-
end
|
data/spec/fixnum_spec.rb
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe "Count number length" do
|
4
|
-
|
5
|
-
it "Fixnum#length" do
|
6
|
-
expect(1.length).to eq 1
|
7
|
-
expect(5.length).to eq 1
|
8
|
-
expect(9.length).to eq 1
|
9
|
-
expect(90.length).to eq 2
|
10
|
-
expect(900.length).to eq 3
|
11
|
-
expect(9000.length).to eq 4
|
12
|
-
expect(-9000.length).to eq 4
|
13
|
-
# alias
|
14
|
-
expect(-9000.digits).to eq 4
|
15
|
-
end
|
16
|
-
|
17
|
-
it "Bignum#length" do
|
18
|
-
expect(12356469787881584554556.length).to eq 23
|
19
|
-
expect(-12356469787881584554556.length).to eq 23
|
20
|
-
# alias
|
21
|
-
expect(-12356469787881584554556.digits).to eq 23
|
22
|
-
end
|
23
|
-
|
24
|
-
it "Float#length" do
|
25
|
-
expect{ 0.0.length }.to raise_error(ArgumentError)
|
26
|
-
expect{ 1.0.length }.to raise_error(ArgumentError)
|
27
|
-
expect{ -1.0.length }.to raise_error(ArgumentError)
|
28
|
-
expect{ 3.14.length }.to raise_error(ArgumentError)
|
29
|
-
expect{ 12356469.987.length }.to raise_error(ArgumentError)
|
30
|
-
# alias
|
31
|
-
expect{ 12356469.987.digits }.to raise_error(ArgumentError)
|
32
|
-
end
|
33
|
-
|
34
|
-
it "BigDecimal#length" do
|
35
|
-
expect{ 1265437718438866624512.123.length }.to raise_error(ArgumentError)
|
36
|
-
expect{ -1265437718438866624512.123.length }.to raise_error(ArgumentError)
|
37
|
-
expect{ 0.9999999999999062.length }.to raise_error(ArgumentError)
|
38
|
-
expect{ -0.9999999999999062.length }.to raise_error(ArgumentError)
|
39
|
-
# alias
|
40
|
-
expect{ -0.9999999999999062.digits }.to raise_error(ArgumentError)
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|