lite-ruby 1.0.15 → 1.0.16
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/CHANGELOG.md +10 -0
- data/Gemfile.lock +1 -1
- data/docs/INTEGER.md +12 -0
- data/docs/NUMERIC.md +10 -0
- data/lib/lite/ruby/array.rb +4 -0
- data/lib/lite/ruby/hash.rb +17 -0
- data/lib/lite/ruby/integer.rb +5 -3
- data/lib/lite/ruby/numeric.rb +6 -0
- data/lib/lite/ruby/object.rb +8 -0
- data/lib/lite/ruby/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 997db962e2187aad31324a203ccd2d9e356d4a18d02b80e24bdc32c7e433e95b
|
4
|
+
data.tar.gz: 9e9b55dca2fea604b0e58e8e750dda082bfc9851ce3c5004f4451afe64468336
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bac9fa22759bd3c30f9596a3906f70e089a99ef8cfcc3eee478f0992fdde84b7d7b069fa185c04b6e1dce5ca8e82602c95c338a7eebf6a212f60f7ba2c6cb146
|
7
|
+
data.tar.gz: a33333716041baaabea38cb8ab2a307f3c587c6988c5d2628e734503c67ee4a10765e150d836cd666a1b2c03a97bff2b5678d5bf6457d05aaf1a135ad88d96f3
|
data/CHANGELOG.md
CHANGED
@@ -6,6 +6,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
6
6
|
|
7
7
|
## [Unreleased]
|
8
8
|
|
9
|
+
## [1.0.16] - 2019-08-18
|
10
|
+
### Added
|
11
|
+
- Added Array => `deep_dup`
|
12
|
+
- Added Hash => `deep_dup`
|
13
|
+
- Added Integer => `combinatorial`
|
14
|
+
- Added Numeric => `round_down`
|
15
|
+
- Added Object => `deep_dup`
|
16
|
+
### Changed
|
17
|
+
- Changed how integer factorial works
|
18
|
+
|
9
19
|
## [1.0.15] - 2019-08-17
|
10
20
|
### Changed
|
11
21
|
- Added config check for each monkey patch
|
data/Gemfile.lock
CHANGED
data/docs/INTEGER.md
CHANGED
@@ -45,11 +45,23 @@ Returns if it is a bitmask set.
|
|
45
45
|
8.bitmask?(2) #=> false
|
46
46
|
```
|
47
47
|
|
48
|
+
`combinatorial`
|
49
|
+
------
|
50
|
+
Calculates the combinatorial of an integer to another integer.
|
51
|
+
|
52
|
+
```ruby
|
53
|
+
50.combinatorial(49) #=> 50
|
54
|
+
50.combinatorial(50) #=> 1
|
55
|
+
8.combinatorial(4) #=> 70
|
56
|
+
```
|
57
|
+
|
48
58
|
`factorial`
|
49
59
|
------
|
50
60
|
Calculates the factorial of an integer.
|
51
61
|
|
52
62
|
```ruby
|
63
|
+
0.factorial #=> 0
|
64
|
+
1.factorial #=> 1
|
53
65
|
4.factorial #=> 24
|
54
66
|
```
|
55
67
|
|
data/docs/NUMERIC.md
CHANGED
@@ -292,6 +292,16 @@ Returns the nth root of a number.
|
|
292
292
|
4.root(2) #=> 2
|
293
293
|
```
|
294
294
|
|
295
|
+
`round_down`
|
296
|
+
------
|
297
|
+
Returns a number rounded down to given value.
|
298
|
+
|
299
|
+
```ruby
|
300
|
+
2.128.round_down #=> 2.0
|
301
|
+
2.128.round_down(2) #=> 2.12
|
302
|
+
2.round_down(2) #=> 2.0
|
303
|
+
```
|
304
|
+
|
295
305
|
`subtract`
|
296
306
|
------
|
297
307
|
Returns the difference of two numbers.
|
data/lib/lite/ruby/array.rb
CHANGED
@@ -57,6 +57,10 @@ if Lite::Ruby.configuration.monkey_patches.include?('array')
|
|
57
57
|
# rubocop:enable Metrics/PerceivedComplexity, Style/GuardClause, Style/IfInsideElse
|
58
58
|
# rubocop:enable Metrics/AbcSize, Metrics/BlockNesting, Metrics/MethodLength
|
59
59
|
|
60
|
+
def deep_dup
|
61
|
+
map(&:deep_dup)
|
62
|
+
end
|
63
|
+
|
60
64
|
def delete_first
|
61
65
|
self[1..-1]
|
62
66
|
end
|
data/lib/lite/ruby/hash.rb
CHANGED
@@ -123,6 +123,23 @@ if Lite::Ruby.configuration.monkey_patches.include?('hash')
|
|
123
123
|
replace(dearray_singular_values)
|
124
124
|
end
|
125
125
|
|
126
|
+
# rubocop:disable Style/CaseEquality
|
127
|
+
def deep_dup
|
128
|
+
hash = dup
|
129
|
+
|
130
|
+
each_pair do |key, value|
|
131
|
+
if key.frozen? && ::String === key
|
132
|
+
hash[key] = value.deep_dup
|
133
|
+
else
|
134
|
+
hash.delete(key)
|
135
|
+
hash[key.deep_dup] = value.deep_dup
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
hash
|
140
|
+
end
|
141
|
+
# rubocop:enable Style/CaseEquality
|
142
|
+
|
126
143
|
def deep_merge(other_hash, &block)
|
127
144
|
dup.deep_merge!(other_hash, &block)
|
128
145
|
end
|
data/lib/lite/ruby/integer.rb
CHANGED
@@ -40,10 +40,12 @@ if Lite::Ruby.configuration.monkey_patches.include?('integer')
|
|
40
40
|
(self & mask) != 0
|
41
41
|
end
|
42
42
|
|
43
|
-
def
|
44
|
-
|
43
|
+
def combinatorial(num)
|
44
|
+
(0...num).inject(1) { |acc, i| (acc * (self - i)) / (i + 1) }
|
45
|
+
end
|
45
46
|
|
46
|
-
|
47
|
+
def factorial
|
48
|
+
(1..self).inject { |acc, i| acc * i } || 0
|
47
49
|
end
|
48
50
|
|
49
51
|
def factors
|
data/lib/lite/ruby/numeric.rb
CHANGED
@@ -214,6 +214,12 @@ if Lite::Ruby.configuration.monkey_patches.include?('numeric')
|
|
214
214
|
self**(1.0 / num)
|
215
215
|
end
|
216
216
|
|
217
|
+
def round_down(num = 0)
|
218
|
+
int, dec = to_f.to_s.split('.')
|
219
|
+
|
220
|
+
"#{int}.#{dec[0...num]}".to_f
|
221
|
+
end
|
222
|
+
|
217
223
|
def subtract(num)
|
218
224
|
self - num
|
219
225
|
end
|
data/lib/lite/ruby/object.rb
CHANGED
@@ -35,6 +35,14 @@ if Lite::Ruby.configuration.monkey_patches.include?('object')
|
|
35
35
|
is_a?(Date)
|
36
36
|
end
|
37
37
|
|
38
|
+
def deep_dup
|
39
|
+
duplicable? ? dup : self
|
40
|
+
end
|
41
|
+
|
42
|
+
def duplicable?
|
43
|
+
true
|
44
|
+
end
|
45
|
+
|
38
46
|
# rubocop:disable Style/YodaCondition
|
39
47
|
def false?
|
40
48
|
false == self
|
data/lib/lite/ruby/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lite-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.16
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Juan Gomez
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-08-
|
11
|
+
date: 2019-08-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|