finishing_moves 0.18 → 0.19
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.
- checksums.yaml +4 -4
- data/.travis.yml +1 -2
- data/lib/finishing_moves/array.rb +1 -1
- data/lib/finishing_moves/hash.rb +0 -12
- data/lib/finishing_moves/kernel.rb +1 -2
- data/lib/finishing_moves/object.rb +9 -5
- data/lib/finishing_moves/symbol.rb +8 -6
- data/lib/finishing_moves/to_bool.rb +1 -1
- data/lib/finishing_moves/version.rb +1 -1
- data/provision.sh +1 -1
- data/spec/kernel_spec.rb +1 -0
- data/spec/numeric_spec.rb +3 -9
- data/spec/object_spec.rb +4 -0
- data/spec/string_spec.rb +54 -23
- data/spec/to_bool_spec.rb +1 -1
- metadata +2 -4
- data/spec/symbol_spec.rb +0 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8d258c9fa2aa428c334917b3ed6f93e8e753cb22
|
4
|
+
data.tar.gz: 66b42d8c9755e15f7ccd6f0039b688b5a20fea87
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8dbc5e8995eef233120cf390d4671087d39c1752845c69b988f5354fbe06b2b2b3c0549bc40eb8a62715b3e841907fec01576e9277b9769db814c8a3a995b106
|
7
|
+
data.tar.gz: 4fe766497b240c4f6ad6793133c4bd7e87b32b0315f8978b368c1a511ca1de86a409f9a981ef47ce2bc12310eb7d3c06e7c62adc1861e336c31a9f87f462bc97
|
data/.travis.yml
CHANGED
@@ -14,7 +14,7 @@ class Array
|
|
14
14
|
|
15
15
|
def to_indexed_hash(starting_key = 0)
|
16
16
|
raise ArgumentError, "#{starting_key.inspect} is not an integer" unless starting_key.is_a? Integer
|
17
|
-
to_hash_values(starting_key)
|
17
|
+
to_hash_values(starting_key)
|
18
18
|
end
|
19
19
|
|
20
20
|
def to_hash_keys(starting_value = 0, &block)
|
data/lib/finishing_moves/hash.rb
CHANGED
@@ -24,16 +24,4 @@ class Hash
|
|
24
24
|
return self
|
25
25
|
end
|
26
26
|
|
27
|
-
# auto-nesting hashes
|
28
|
-
# https://dzone.com/articles/create-nested-hashes-ruby
|
29
|
-
# Goal:
|
30
|
-
# a = {}
|
31
|
-
# a[2][1] = 2
|
32
|
-
# a[2][2][3] = 4
|
33
|
-
# a[3][1][1][1] = 1
|
34
|
-
def Hash.new_nested_hash
|
35
|
-
Hash.new{ |h,k| h[k] = Hash.new(&h.default_proc) }
|
36
|
-
end
|
37
|
-
|
38
|
-
|
39
27
|
end
|
@@ -12,11 +12,7 @@ class Object
|
|
12
12
|
alias_method :is_not_an?, :is_not_a?
|
13
13
|
|
14
14
|
def same_as(compare)
|
15
|
-
|
16
|
-
self.to_s == compare.to_s
|
17
|
-
else
|
18
|
-
raise ArgumentError.new("Cannot compare \"#{self.class.name}\" to \"#{compare.class.name}\", no string conversion")
|
19
|
-
end
|
15
|
+
self.to_s == compare.to_s
|
20
16
|
end
|
21
17
|
alias_method :same_as?, :same_as
|
22
18
|
|
@@ -26,10 +22,18 @@ class Object
|
|
26
22
|
name.keyify
|
27
23
|
end
|
28
24
|
|
25
|
+
def self.keyify!
|
26
|
+
name.keyify!
|
27
|
+
end
|
28
|
+
|
29
29
|
def self.slugify
|
30
30
|
name.slugify
|
31
31
|
end
|
32
32
|
|
33
|
+
def self.slugify!
|
34
|
+
name.slugify!
|
35
|
+
end
|
36
|
+
|
33
37
|
def false?
|
34
38
|
return true if self.is_a? FalseClass
|
35
39
|
return false
|
@@ -1,11 +1,5 @@
|
|
1
1
|
class Symbol
|
2
2
|
|
3
|
-
# TODO
|
4
|
-
# Credit: http://thingsinabucket.com/2015/07/01/three_little_hacks/
|
5
|
-
def ~@
|
6
|
-
-> (o) { o.respond_to?(self) }
|
7
|
-
end
|
8
|
-
|
9
3
|
def keyify
|
10
4
|
to_s.keyify
|
11
5
|
end
|
@@ -14,4 +8,12 @@ class Symbol
|
|
14
8
|
to_s.slugify
|
15
9
|
end
|
16
10
|
|
11
|
+
def keyify!
|
12
|
+
to_s.keyify!
|
13
|
+
end
|
14
|
+
|
15
|
+
def slugify!
|
16
|
+
to_s.slugify!
|
17
|
+
end
|
18
|
+
|
17
19
|
end
|
data/provision.sh
CHANGED
data/spec/kernel_spec.rb
CHANGED
@@ -24,6 +24,7 @@ describe Kernel do
|
|
24
24
|
expect( nil_chain(false) { bogus_variable } ).to equal false
|
25
25
|
expect( nil_chain('gotcha!') { bogus_variable } ).to eq 'gotcha!'
|
26
26
|
expect( nil_chain('gotcha!') { params[:bogus_key] } ).to eq 'gotcha!'
|
27
|
+
expect( nil_chain('gotcha!') { raise NoMethodError } ).to eq 'gotcha!'
|
27
28
|
expect( nil_chain('gotcha!') { params[:foo] } ).to eq 'bar'
|
28
29
|
|
29
30
|
# alias
|
data/spec/numeric_spec.rb
CHANGED
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe "Numeric methods" do
|
4
4
|
|
5
|
-
it "
|
5
|
+
it "Integer#length" do
|
6
6
|
expect(1.length).to eq 1
|
7
7
|
expect(5.length).to eq 1
|
8
8
|
expect(9.length).to eq 1
|
@@ -12,9 +12,6 @@ describe "Numeric methods" do
|
|
12
12
|
expect(-9000.length).to eq 4
|
13
13
|
# alias
|
14
14
|
expect(-9000.digits).to eq 4
|
15
|
-
end
|
16
|
-
|
17
|
-
it "Bignum#length" do
|
18
15
|
expect(12356469787881584554556.length).to eq 23
|
19
16
|
expect(-12356469787881584554556.length).to eq 23
|
20
17
|
# alias
|
@@ -40,7 +37,7 @@ describe "Numeric methods" do
|
|
40
37
|
expect{ -0.9999999999999062.digits }.to raise_error(ArgumentError)
|
41
38
|
end
|
42
39
|
|
43
|
-
it "
|
40
|
+
it "Integer#subtract_percent" do
|
44
41
|
expect(1.subtract_percent(10)).to eq 0.9
|
45
42
|
expect(10.subtract_percent(10)).to eq 9.0
|
46
43
|
expect(25.subtract_percent(5)).to eq 23.75
|
@@ -70,16 +67,13 @@ describe "Numeric methods" do
|
|
70
67
|
end
|
71
68
|
|
72
69
|
|
73
|
-
it "
|
70
|
+
it "Integer#add_percent" do
|
74
71
|
expect(1.add_percent(10)).to eq 1.1
|
75
72
|
expect(10.add_percent(10)).to eq 11.0
|
76
73
|
expect(25.add_percent(5)).to eq 26.25
|
77
74
|
expect(76.add_percent(40)).to eq 106.4
|
78
75
|
expect(76.markup_by_percent(40)).to eq 106.4
|
79
76
|
expect(200.markup_by_percent(100)).to eq 400
|
80
|
-
end
|
81
|
-
|
82
|
-
it "Bignum#add_percent" do
|
83
77
|
expect(12356469787881584554556.add_percent(10)).to eq 1.3592116766669745e+22
|
84
78
|
expect(12356469787881584554556.markup_by_percent(10)).to eq 1.3592116766669745e+22
|
85
79
|
end
|
data/spec/object_spec.rb
CHANGED
data/spec/string_spec.rb
CHANGED
@@ -154,36 +154,57 @@ describe String do
|
|
154
154
|
expect("\n\n".newline_to(0)).to eq '00'
|
155
155
|
expect("\n\n".newline_to(true)).to eq 'truetrue'
|
156
156
|
|
157
|
+
# should return a modified object, leaving original intact
|
158
|
+
newline = "\n"
|
159
|
+
bar = newline.newline_to(:bar)
|
160
|
+
expect(newline).to eq "\n"
|
161
|
+
expect(bar).to eq 'bar'
|
162
|
+
|
157
163
|
expect("Let's play Global Thermonuclear War.\n\r".newline_to).to eq "Let's play Global Thermonuclear War. "
|
158
164
|
expect("A strange game.\n\nThe only winning move is not to play.\r\nHow about a nice game of chess?\r".newline_to).
|
159
165
|
to eq "A strange game. The only winning move is not to play. How about a nice game of chess? "
|
160
166
|
end
|
161
167
|
|
168
|
+
it "#newline_to!" do
|
169
|
+
var = "\n"
|
170
|
+
var.newline_to! :foo
|
171
|
+
expect(var).to eq 'foo'
|
172
|
+
end
|
173
|
+
|
174
|
+
keyify_sets = [
|
175
|
+
[Integer, :integer],
|
176
|
+
[Math::DomainError, :math_domain_error],
|
177
|
+
['FooBarBaz', :foo_bar_baz],
|
178
|
+
[:FooBarBaz, :foo_bar_baz],
|
179
|
+
["Foo-Bar'Baz", :foo_bar_baz],
|
180
|
+
['(Foo*&Bar!Baz?', :foo_bar_baz],
|
181
|
+
['1234FooBAR', :foo_bar],
|
182
|
+
['!@#$Foo0987', :foo0987],
|
183
|
+
["Bill O'Shea", :bill_o_shea],
|
184
|
+
["Bill O Shea", :bill_o_shea],
|
185
|
+
["Bill O Shea", :bill_o_shea],
|
186
|
+
]
|
187
|
+
|
162
188
|
it '#keyify' do
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
expect("Foo-Bar'Baz".keyify).to eq :foo_bar_baz
|
168
|
-
expect('(Foo*&Bar!Baz?'.keyify).to eq :foo_bar_baz
|
169
|
-
expect('1234FooBAR'.keyify).to eq :foo_bar
|
170
|
-
expect('!@#$Foo0987'.keyify).to eq :foo0987
|
189
|
+
keyify_sets.each do |set|
|
190
|
+
inc, out = set
|
191
|
+
expect(inc.keyify).to eq out
|
192
|
+
end
|
171
193
|
expect('!@#$%^'.keyify).to eq nil
|
172
194
|
expect('12345678'.keyify).to eq nil
|
173
|
-
expect("Bill O'Shea".keyify).to eq :bill_o_shea
|
174
|
-
expect("Bill O Shea".keyify).to eq :bill_o_shea
|
175
|
-
expect("Bill O Shea".keyify).to eq :bill_o_shea
|
176
|
-
|
177
195
|
# make sure we're not performing in place
|
178
196
|
str = 'FooBarBaz'
|
179
197
|
expect(str.keyify).to eq :foo_bar_baz
|
180
198
|
expect(str).to eq 'FooBarBaz'
|
181
|
-
|
182
199
|
# should work on frozen values
|
183
200
|
expect('FooBarBaz'.freeze.keyify).to eq :foo_bar_baz
|
184
201
|
end
|
185
202
|
|
186
203
|
it '#keyify!' do
|
204
|
+
keyify_sets.each do |set|
|
205
|
+
inc, out = set
|
206
|
+
expect(inc.keyify!).to eq out
|
207
|
+
end
|
187
208
|
expect{ '!@#$%^'.keyify! }.to raise_error(ArgumentError)
|
188
209
|
expect{ '12345678'.keyify! }.to raise_error(ArgumentError)
|
189
210
|
end
|
@@ -193,19 +214,25 @@ describe String do
|
|
193
214
|
expect('1 2 3 4 5'.dedupe(' ').replace_whitespace('+')).to eq '1+2+3+4+5'
|
194
215
|
end
|
195
216
|
|
217
|
+
slugify_sets = [
|
218
|
+
[Integer, 'integer'],
|
219
|
+
[Math::DomainError, 'math-domain-error'],
|
220
|
+
['FooBarBaz', 'foo-bar-baz'],
|
221
|
+
[:FooBarBaz, 'foo-bar-baz'],
|
222
|
+
["Foo-Bar'Baz", 'foo-bar-baz'],
|
223
|
+
['(Foo*&Bar!Baz?', 'foo-bar-baz'],
|
224
|
+
["Bill O'Shea", 'bill-o-shea'],
|
225
|
+
["Bill O Shea", 'bill-o-shea'],
|
226
|
+
["Bill O Shea", 'bill-o-shea'],
|
227
|
+
]
|
228
|
+
|
196
229
|
it '#slugify' do
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
expect("Foo-Bar'Baz".slugify).to eq 'foo-bar-baz'
|
202
|
-
expect('(Foo*&Bar!Baz?'.slugify).to eq 'foo-bar-baz'
|
230
|
+
slugify_sets.each do |set|
|
231
|
+
inc, out = set
|
232
|
+
expect(inc.slugify).to eq out
|
233
|
+
end
|
203
234
|
expect('!@#$Foo0987'.slugify).to eq 'foo0987'
|
204
235
|
expect('!@#$%^'.slugify).to eq nil
|
205
|
-
expect("Bill O'Shea".slugify).to eq 'bill-o-shea'
|
206
|
-
expect("Bill O Shea".slugify).to eq 'bill-o-shea'
|
207
|
-
expect("Bill O Shea".slugify).to eq 'bill-o-shea'
|
208
|
-
|
209
236
|
# make sure we're not performing in place
|
210
237
|
str = 'FooBarBaz'
|
211
238
|
expect(str.slugify).to eq 'foo-bar-baz'
|
@@ -221,6 +248,10 @@ describe String do
|
|
221
248
|
end
|
222
249
|
|
223
250
|
it '#slugify!' do
|
251
|
+
slugify_sets.each do |set|
|
252
|
+
inc, out = set
|
253
|
+
expect(inc.slugify!).to eq out
|
254
|
+
end
|
224
255
|
expect{ '!@#$%^'.slugify! }.to raise_error(ArgumentError)
|
225
256
|
expect{ '12345678'.slugify! }.not_to raise_error
|
226
257
|
end
|
data/spec/to_bool_spec.rb
CHANGED
@@ -20,7 +20,7 @@ describe "Boolean typecasting" do
|
|
20
20
|
expect{ "000".to_bool }.to raise_error(ArgumentError)
|
21
21
|
end
|
22
22
|
|
23
|
-
it "
|
23
|
+
it "Integer#to_bool" do
|
24
24
|
expect(1.to_bool).to eq true
|
25
25
|
expect(0.to_bool).to eq false
|
26
26
|
expect{ 2.to_bool }.to raise_error(ArgumentError)
|
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.19'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Frank Koehl
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-
|
12
|
+
date: 2017-06-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rb-readline
|
@@ -135,7 +135,6 @@ files:
|
|
135
135
|
- spec/object_spec.rb
|
136
136
|
- spec/spec_helper.rb
|
137
137
|
- spec/string_spec.rb
|
138
|
-
- spec/symbol_spec.rb
|
139
138
|
- spec/to_bool_spec.rb
|
140
139
|
homepage: https://github.com/forgecrafted/finishing_moves
|
141
140
|
licenses:
|
@@ -171,5 +170,4 @@ test_files:
|
|
171
170
|
- spec/object_spec.rb
|
172
171
|
- spec/spec_helper.rb
|
173
172
|
- spec/string_spec.rb
|
174
|
-
- spec/symbol_spec.rb
|
175
173
|
- spec/to_bool_spec.rb
|
data/spec/symbol_spec.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Symbol do
|
4
|
-
|
5
|
-
it "unary respond_to" do
|
6
|
-
a_thing = TestThing.new 'foo bar'
|
7
|
-
expect(a_thing).to eq 'foo bar'
|
8
|
-
end
|
9
|
-
|
10
|
-
end
|
11
|
-
|
12
|
-
|
13
|
-
class TestThing < String
|
14
|
-
|
15
|
-
def custom_method
|
16
|
-
'it works!'
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|