active_object 5.8.0 → 5.8.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/active_object/enumerable.rb +11 -18
- data/lib/active_object/hash.rb +1 -2
- data/lib/active_object/integer.rb +1 -1
- data/lib/active_object/numeric.rb +10 -4
- data/lib/active_object/string.rb +1 -3
- data/lib/active_object/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f6749777a782c78d352dff3fd8ea2ee047924a64e589c05377ebc9610eee5e34
|
4
|
+
data.tar.gz: 3f8059fa849376bcd053182e61238c7d75b074c47822f2844b2ee74aebdcafbf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f941a7ff54a3b52614b07ff3bb9ba8b7774761c1415ccca33b97b5bb08bc51b36a9c51ce9b0399a818852ea54337a13da8658418d5a5d312c715aac9dde7e850
|
7
|
+
data.tar.gz: 1bf88511a3c768cef14edebdc2010d886c90eec0dbf6e45fc441d6f61a9dcf20b5929df8af5a677c64f750edfa712f9df4f4b21e5d64b758fa082825a1f48516
|
@@ -192,16 +192,13 @@ if ActiveObject.configuration.autoload_enumerable
|
|
192
192
|
def median(identity = 0)
|
193
193
|
collection_length = length.to_f
|
194
194
|
collection_sorted = sort
|
195
|
-
return
|
195
|
+
return identity unless collection_length > 0.0
|
196
196
|
|
197
197
|
half_collection = collection_length / 2.0
|
198
198
|
sorted_collection = collection_sorted[half_collection]
|
199
|
+
return sorted_collection unless (collection_length % 2).zero?
|
199
200
|
|
200
|
-
|
201
|
-
(collection_sorted[half_collection - 1.0] + sorted_collection) / 2.0
|
202
|
-
else
|
203
|
-
sorted_collection
|
204
|
-
end
|
201
|
+
(collection_sorted[half_collection - 1.0] + sorted_collection) / 2.0
|
205
202
|
end
|
206
203
|
|
207
204
|
# rubocop:disable Metrics/AbcSize
|
@@ -229,24 +226,20 @@ if ActiveObject.configuration.autoload_enumerable
|
|
229
226
|
each_with_object(::Hash.new(0)) { |key, hsh| hsh[key] += 1 }
|
230
227
|
end
|
231
228
|
|
232
|
-
# rubocop:disable Metrics/AbcSize
|
229
|
+
# rubocop:disable Metrics/AbcSize
|
233
230
|
def percentile(num, identity = 0)
|
234
231
|
return identity unless length.positive?
|
235
232
|
|
236
233
|
collection_sorted = sort
|
237
234
|
rank = (num.to_f / 100) * (length + 1)
|
235
|
+
return collection_sorted[rank - 1] unless rank.fraction?
|
238
236
|
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
(rank.fraction * (sample_two - sample_one)) + sample_one
|
245
|
-
else
|
246
|
-
collection_sorted[rank - 1]
|
247
|
-
end
|
237
|
+
truncated_rank = rank.truncate
|
238
|
+
sample_one = collection_sorted[truncated_rank - 1]
|
239
|
+
sample_two = collection_sorted[truncated_rank]
|
240
|
+
(rank.fraction * (sample_two - sample_one)) + sample_one
|
248
241
|
end
|
249
|
-
# rubocop:enable Metrics/AbcSize
|
242
|
+
# rubocop:enable Metrics/AbcSize
|
250
243
|
|
251
244
|
def range(identity = 0)
|
252
245
|
return identity unless length.positive?
|
@@ -305,7 +298,7 @@ if ActiveObject.configuration.autoload_enumerable
|
|
305
298
|
end
|
306
299
|
|
307
300
|
def take_last_if
|
308
|
-
return
|
301
|
+
return to_enum(:take_last_if) unless block_given?
|
309
302
|
|
310
303
|
result = []
|
311
304
|
reverse_each { |val| yield(val) ? result.unshift(val) : break }
|
data/lib/active_object/hash.rb
CHANGED
@@ -215,8 +215,7 @@ module ActiveObject
|
|
215
215
|
end
|
216
216
|
|
217
217
|
def slice(*keys)
|
218
|
-
keys.flatten
|
219
|
-
.each_with_object({}) { |key, hsh| hsh[key] = self[key] if key?(key) }
|
218
|
+
keys.flatten.each_with_object({}) { |key, hsh| hsh[key] = self[key] if key?(key) }
|
220
219
|
end
|
221
220
|
|
222
221
|
def slice!(*keys)
|
@@ -32,7 +32,7 @@ module ActiveObject
|
|
32
32
|
return '' if zero?
|
33
33
|
return "-#{(-self).roman}" if negative?
|
34
34
|
|
35
|
-
ROMAN_VALUES.each { |key, val| return
|
35
|
+
ROMAN_VALUES.each { |key, val| return "#{key}#{(self - val).roman}" if val <= self }
|
36
36
|
end
|
37
37
|
|
38
38
|
def time
|
@@ -313,7 +313,9 @@ module ActiveObject
|
|
313
313
|
end
|
314
314
|
|
315
315
|
def multiple_of?(number)
|
316
|
-
|
316
|
+
return zero? if number.zero?
|
317
|
+
|
318
|
+
modulo(number).zero?
|
317
319
|
end
|
318
320
|
|
319
321
|
def nautical_miles_in_inches
|
@@ -449,9 +451,9 @@ module ActiveObject
|
|
449
451
|
def to_length(from, to)
|
450
452
|
assert_inclusion_of_valid_keys!(LENGTH_KEYS.values.flatten, from, to)
|
451
453
|
|
452
|
-
metric_keys = LENGTH_KEYS.fetch(:metric)
|
453
454
|
return self if from == to
|
454
455
|
|
456
|
+
metric_keys = LENGTH_KEYS.fetch(:metric)
|
455
457
|
metrics_included_from = metric_keys.include?(from)
|
456
458
|
|
457
459
|
case to
|
@@ -475,9 +477,9 @@ module ActiveObject
|
|
475
477
|
def to_mass(from, to)
|
476
478
|
assert_inclusion_of_valid_keys!(MASS_KEYS.values.flatten, from, to)
|
477
479
|
|
478
|
-
metric_keys = MASS_KEYS.fetch(:metric)
|
479
480
|
return self if from == to
|
480
481
|
|
482
|
+
metric_keys = MASS_KEYS.fetch(:metric)
|
481
483
|
metrics_included_from = metric_keys.include?(from)
|
482
484
|
|
483
485
|
case to
|
@@ -562,7 +564,11 @@ module ActiveObject
|
|
562
564
|
alpha = to_f
|
563
565
|
beta = number.to_f
|
564
566
|
|
565
|
-
alpha.zero? || beta.zero?
|
567
|
+
if alpha.zero? || beta.zero?
|
568
|
+
(alpha - beta).abs < epsilon
|
569
|
+
else
|
570
|
+
(alpha / beta - 1).abs < epsilon
|
571
|
+
end
|
566
572
|
end
|
567
573
|
|
568
574
|
def yards_in_inches
|
data/lib/active_object/string.rb
CHANGED