lite-ruby 1.1.0 → 1.1.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 706904db37834627c1356104bc628510a7aa144278306c0cdb8a95594204444a
4
- data.tar.gz: 5aac1bf1134a94b67dca8d577396f5da9f4f1f35c294040412c1ac3c49f2a3ee
3
+ metadata.gz: d888bbc03ab7a3385008969089ec8b73d92af59cf6f1384a9176f90807b91d89
4
+ data.tar.gz: a2aa054f8d6f728f8d84b42b80031e3f15f899d5722e01dcf5c3758927838dc4
5
5
  SHA512:
6
- metadata.gz: 1241428618317da93171051ef4ec7ff613f8db822d1514c71653f5d591067eb787fa6bd88b5a9462020fa6a0116edf3e064462996ca8f6734da52c8031102317
7
- data.tar.gz: 2fe2fca36eec6f76495fcef11e57f1dc75153a36c642225e613a43bb97defc28d803aeb78063b4459e9ebd426277f803baf8e3f6c3eecdd32d47fba94ec50b4b
6
+ metadata.gz: 1c6e3d0db894b83cba54985a3272f453b4001610f399268ddacd2952045a8cc879bf3eca38c7451a9cffddb299a5c50a03988573e29b34bfe9fefa284718296b
7
+ data.tar.gz: 6177ea5a91f27eb3e534bb385500bb2eee6d111f77b2d7339ca8993539c32ac9e611639a4685c8db4999222bac8f5a6bb174a76f51d70323f9f807be72889936
data/CHANGELOG.md CHANGED
@@ -6,6 +6,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [1.1.5] - 2021-02-16
10
+ ### Added
11
+ - Added Array => `divergence`
12
+
13
+ ## [1.1.4] - 2020-11-19
14
+ ### Changed
15
+ - Object `array?` coerce ARGV check from nil to string
16
+
17
+ ## [1.1.3] - 2020-11-18
18
+ ### Changed
19
+ - Object `array?` does not clash with PG gem
20
+
21
+ ## [1.1.2] - 2020-11-08
22
+ ### Changed
23
+ - Array `extract!` does not alias except
24
+ - Update string methods to mutate self
25
+
26
+ ## [1.1.1] - 2020-11-08
27
+ ### Changed
28
+ - Revert String => `transliterize` to `transliterate`
29
+
9
30
  ## [1.1.0] - 2020-11-06
10
31
  ### Added
11
32
  - Added Array => `extract!` to `except!` alias
data/Gemfile.lock CHANGED
@@ -1,56 +1,58 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- lite-ruby (1.1.0)
4
+ lite-ruby (1.1.5)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
- actionpack (6.0.3.4)
10
- actionview (= 6.0.3.4)
11
- activesupport (= 6.0.3.4)
12
- rack (~> 2.0, >= 2.0.8)
9
+ actionpack (6.1.2.1)
10
+ actionview (= 6.1.2.1)
11
+ activesupport (= 6.1.2.1)
12
+ rack (~> 2.0, >= 2.0.9)
13
13
  rack-test (>= 0.6.3)
14
14
  rails-dom-testing (~> 2.0)
15
15
  rails-html-sanitizer (~> 1.0, >= 1.2.0)
16
- actionview (6.0.3.4)
17
- activesupport (= 6.0.3.4)
16
+ actionview (6.1.2.1)
17
+ activesupport (= 6.1.2.1)
18
18
  builder (~> 3.1)
19
19
  erubi (~> 1.4)
20
20
  rails-dom-testing (~> 2.0)
21
21
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
22
- activesupport (6.0.3.4)
22
+ activesupport (6.1.2.1)
23
23
  concurrent-ruby (~> 1.0, >= 1.0.2)
24
- i18n (>= 0.7, < 2)
25
- minitest (~> 5.1)
26
- tzinfo (~> 1.1)
27
- zeitwerk (~> 2.2, >= 2.2.2)
28
- ast (2.4.1)
24
+ i18n (>= 1.6, < 2)
25
+ minitest (>= 5.1)
26
+ tzinfo (~> 2.0)
27
+ zeitwerk (~> 2.3)
28
+ ast (2.4.2)
29
29
  builder (3.2.4)
30
30
  colorize (0.8.1)
31
- concurrent-ruby (1.1.7)
31
+ concurrent-ruby (1.1.8)
32
32
  crass (1.0.6)
33
33
  diff-lcs (1.4.4)
34
- erubi (1.9.0)
35
- fasterer (0.8.3)
34
+ erubi (1.10.0)
35
+ fasterer (0.9.0)
36
36
  colorize (~> 0.7)
37
37
  ruby_parser (>= 3.14.1)
38
38
  generator_spec (0.9.4)
39
39
  activesupport (>= 3.0.0)
40
40
  railties (>= 3.0.0)
41
- i18n (1.8.5)
41
+ i18n (1.8.9)
42
42
  concurrent-ruby (~> 1.0)
43
- loofah (2.7.0)
43
+ loofah (2.9.0)
44
44
  crass (~> 1.0.2)
45
45
  nokogiri (>= 1.5.9)
46
46
  method_source (1.0.0)
47
- mini_portile2 (2.4.0)
48
- minitest (5.14.2)
49
- nokogiri (1.10.10)
50
- mini_portile2 (~> 2.4.0)
51
- parallel (1.19.2)
52
- parser (2.7.2.0)
47
+ mini_portile2 (2.5.0)
48
+ minitest (5.14.3)
49
+ nokogiri (1.11.1)
50
+ mini_portile2 (~> 2.5.0)
51
+ racc (~> 1.4)
52
+ parallel (1.20.1)
53
+ parser (3.0.0.0)
53
54
  ast (~> 2.4.1)
55
+ racc (1.5.2)
54
56
  rack (2.2.3)
55
57
  rack-test (1.1.0)
56
58
  rack (>= 1.0, < 3)
@@ -59,56 +61,55 @@ GEM
59
61
  nokogiri (>= 1.6)
60
62
  rails-html-sanitizer (1.3.0)
61
63
  loofah (~> 2.3)
62
- railties (6.0.3.4)
63
- actionpack (= 6.0.3.4)
64
- activesupport (= 6.0.3.4)
64
+ railties (6.1.2.1)
65
+ actionpack (= 6.1.2.1)
66
+ activesupport (= 6.1.2.1)
65
67
  method_source
66
68
  rake (>= 0.8.7)
67
- thor (>= 0.20.3, < 2.0)
69
+ thor (~> 1.0)
68
70
  rainbow (3.0.0)
69
- rake (13.0.1)
70
- regexp_parser (1.8.2)
71
+ rake (13.0.3)
72
+ regexp_parser (2.0.3)
71
73
  rexml (3.2.4)
72
74
  rspec (3.10.0)
73
75
  rspec-core (~> 3.10.0)
74
76
  rspec-expectations (~> 3.10.0)
75
77
  rspec-mocks (~> 3.10.0)
76
- rspec-core (3.10.0)
78
+ rspec-core (3.10.1)
77
79
  rspec-support (~> 3.10.0)
78
- rspec-expectations (3.10.0)
80
+ rspec-expectations (3.10.1)
79
81
  diff-lcs (>= 1.2.0, < 2.0)
80
82
  rspec-support (~> 3.10.0)
81
- rspec-mocks (3.10.0)
83
+ rspec-mocks (3.10.2)
82
84
  diff-lcs (>= 1.2.0, < 2.0)
83
85
  rspec-support (~> 3.10.0)
84
- rspec-support (3.10.0)
85
- rubocop (1.2.0)
86
+ rspec-support (3.10.2)
87
+ rubocop (1.10.0)
86
88
  parallel (~> 1.10)
87
- parser (>= 2.7.1.5)
89
+ parser (>= 3.0.0.0)
88
90
  rainbow (>= 2.2.2, < 4.0)
89
- regexp_parser (>= 1.8)
91
+ regexp_parser (>= 1.8, < 3.0)
90
92
  rexml
91
- rubocop-ast (>= 1.0.1)
93
+ rubocop-ast (>= 1.2.0, < 2.0)
92
94
  ruby-progressbar (~> 1.7)
93
- unicode-display_width (>= 1.4.0, < 2.0)
94
- rubocop-ast (1.1.1)
95
+ unicode-display_width (>= 1.4.0, < 3.0)
96
+ rubocop-ast (1.4.1)
95
97
  parser (>= 2.7.1.5)
96
- rubocop-performance (1.8.1)
97
- rubocop (>= 0.87.0)
98
+ rubocop-performance (1.9.2)
99
+ rubocop (>= 0.90.0, < 2.0)
98
100
  rubocop-ast (>= 0.4.0)
99
- rubocop-rspec (2.0.0)
101
+ rubocop-rspec (2.2.0)
100
102
  rubocop (~> 1.0)
101
103
  rubocop-ast (>= 1.1.0)
102
- ruby-progressbar (1.10.1)
103
- ruby_parser (3.15.0)
104
+ ruby-progressbar (1.11.0)
105
+ ruby_parser (3.15.1)
104
106
  sexp_processor (~> 4.9)
105
- sexp_processor (4.15.1)
106
- thor (1.0.1)
107
- thread_safe (0.3.6)
108
- tzinfo (1.2.7)
109
- thread_safe (~> 0.1)
110
- unicode-display_width (1.7.0)
111
- zeitwerk (2.4.1)
107
+ sexp_processor (4.15.2)
108
+ thor (1.1.0)
109
+ tzinfo (2.0.4)
110
+ concurrent-ruby (~> 1.0)
111
+ unicode-display_width (2.0.0)
112
+ zeitwerk (2.4.2)
112
113
 
113
114
  PLATFORMS
114
115
  ruby
@@ -125,4 +126,4 @@ DEPENDENCIES
125
126
  rubocop-rspec
126
127
 
127
128
  BUNDLED WITH
128
- 2.1.4
129
+ 2.2.9
data/docs/ARRAY.md CHANGED
@@ -163,6 +163,16 @@ Removes given values from the array.
163
163
  [1, 2, 3, 4].except(1, 3) #=> [2, 4]
164
164
  ```
165
165
 
166
+ `extract!`
167
+ ------
168
+ Removes and returns the elements for which the block returns a true value. If no block is given, an Enumerator is returned instead.
169
+
170
+ ```ruby
171
+ a1 = [1, 2, 3, 4]
172
+ a1.extract!(&:odd?) #=> [1, 3]
173
+ a1 #=> [2, 4]
174
+ ```
175
+
166
176
  `from`
167
177
  ------
168
178
  Returns the tail of the array from a given position.
data/docs/STRING.md CHANGED
@@ -511,12 +511,12 @@ If the position is negative, it is counted from the end of the string.
511
511
  'example'.to(-2) #=> 'exampl'
512
512
  ```
513
513
 
514
- `transliterate(!)`
514
+ `transliterize(!)`
515
515
  ------
516
516
  Returns a string with swapped special characters.
517
517
 
518
518
  ```ruby
519
- 'źåöé'.transliterate #=> 'zaoe'
519
+ 'źåöé'.transliterize #=> 'zaoe'
520
520
  ```
521
521
 
522
522
  `truncate`
@@ -147,6 +147,10 @@ if Lite::Ruby.configuration.monkey_patches.include?('array')
147
147
  replace(denillify(identity))
148
148
  end
149
149
 
150
+ def divergence(other)
151
+ (self - other) | (other - self)
152
+ end
153
+
150
154
  def duplicates(minimum = 2)
151
155
  hash = Hash.new(0)
152
156
  each { |val| hash[val] += 1 }
@@ -271,7 +275,6 @@ if Lite::Ruby.configuration.monkey_patches.include?('array')
271
275
  self
272
276
  end
273
277
 
274
- alias extract! except!
275
278
  alias indices indexes
276
279
  alias reject_values except
277
280
  alias reject_values! except!
@@ -312,7 +312,7 @@ if Lite::Ruby.configuration.monkey_patches.include?('hash')
312
312
  end
313
313
 
314
314
  def shuffle
315
- Hash[to_a.sample(size)]
315
+ to_a.sample(size).to_h
316
316
  end
317
317
 
318
318
  def shuffle!
@@ -341,11 +341,11 @@ if Lite::Ruby.configuration.monkey_patches.include?('hash')
341
341
  each_with_object({}) do |(key, val), hash|
342
342
  new_key = begin
343
343
  str = key.dup.to_s
344
- str = str.gsub!(/::/, '/') || str
345
- str = str.gsub!(/([A-Z\d]+)([A-Z][a-z])/, '\1_\2') || str
346
- str = str.gsub!(/([a-z\d])([A-Z])/, '\1_\2') || str
347
- str = str.tr!(' -', '_') || str
348
- str = str.downcase!
344
+ str.gsub!(/::/, '/') || str
345
+ str.gsub!(/([A-Z\d]+)([A-Z][a-z])/, '\1_\2') || str
346
+ str.gsub!(/([a-z\d])([A-Z])/, '\1_\2') || str
347
+ str.tr!(' -', '_') || str
348
+ str.downcase!
349
349
  str.to_sym
350
350
  rescue StandardError
351
351
  key
@@ -5,7 +5,7 @@ if Lite::Ruby.configuration.monkey_patches.include?('date')
5
5
  module Ruby
6
6
  module DateHelper
7
7
 
8
- DATE_STAMPS ||= {
8
+ DATE_STAMPS = {
9
9
  weekday: '%d',
10
10
  weekday_blank: '%_d',
11
11
  weekday_padded: '%d',
@@ -41,7 +41,7 @@ if Lite::Ruby.configuration.monkey_patches.include?('date')
41
41
  date_abbr: '%b %-d, %Y',
42
42
  date_iso: '%Y-%m-%d'
43
43
  }.freeze
44
- DATE_UNITS ||= {
44
+ DATE_UNITS = {
45
45
  w: 'u',
46
46
  weekday: 'u',
47
47
  ww: 'w',
@@ -5,7 +5,7 @@ if Lite::Ruby.configuration.monkey_patches.include?('time')
5
5
  module Ruby
6
6
  module TimeHelper
7
7
 
8
- TIME_STAMPS ||= {
8
+ TIME_STAMPS = {
9
9
  hour: '%H',
10
10
  hour_blank: '%k',
11
11
  hour_padded: '%H',
@@ -3,7 +3,7 @@
3
3
  if Lite::Ruby.configuration.monkey_patches.include?('integer')
4
4
  class Integer
5
5
 
6
- ROMAN_NUMERALS ||= {
6
+ ROMAN_NUMERALS = {
7
7
  M: 1000, CM: 900, D: 500, CD: 400, C: 100, XC: 90, L: 50, XL: 40, X: 10, IX: 9, V: 5, IV: 4,
8
8
  I: 1
9
9
  }.freeze
@@ -5,15 +5,20 @@ if Lite::Ruby.configuration.monkey_patches.include?('object')
5
5
 
6
6
  class Object
7
7
 
8
- FALSE_VALUES ||= %w[
8
+ FALSE_VALUES = %w[
9
9
  0 f false n no off
10
10
  ].freeze
11
- TRUE_VALUES ||= %w[
11
+ TRUE_VALUES = %w[
12
12
  1 t true y yes on
13
13
  ].freeze
14
14
 
15
- def array?
16
- is_a?(Array)
15
+ # NOTE: There is a class between the PG gem and the `array?` method.
16
+ # We only need to skip this on migrations since that action
17
+ # happens on a seperate runtime.
18
+ unless defined?(PG) && ARGV.first.to_s.start_with?('db:')
19
+ def array?
20
+ is_a?(Array)
21
+ end
17
22
  end
18
23
 
19
24
  def bool?
@@ -6,6 +6,14 @@ class Array
6
6
  map(&:deep_dup)
7
7
  end
8
8
 
9
+ def extract!
10
+ return to_enum(:extract!) { size } unless block_given?
11
+
12
+ extracted_elements = []
13
+ reject! { |element| extracted_elements << element if yield(element) }
14
+ extracted_elements
15
+ end
16
+
9
17
  def from(position)
10
18
  self[position, size] || []
11
19
  end
@@ -16,8 +16,9 @@ class String
16
16
 
17
17
  def classify
18
18
  str = dup
19
- str = str.sub!(/.*\./, '')
19
+ str.sub!(/.*\./, '')
20
20
  str.camelize!
21
+ str || self
21
22
  end
22
23
 
23
24
  def constantize
@@ -52,12 +53,12 @@ class String
52
53
 
53
54
  def humanize(capitalize: true)
54
55
  str = dup
55
- str = str.underscore!
56
- str = str.delete_suffix!('_id')
57
- str = str.tr!('_', ' ')
58
- str = str.squish!
59
- str = str.gsub!(/([a-z\d]*)/i, &:downcase)
60
- str = str.gsub!(/\A\w/) { |s| capitalize ? s.upcase : s }
56
+ str.underscore!
57
+ str.delete_suffix!('_id')
58
+ str.tr!('_', ' ')
59
+ str.squish!
60
+ str.gsub!(/([a-z\d]*)/i, &:downcase)
61
+ str.gsub!(/\A\w/) { |s| capitalize ? s.upcase : s }
61
62
  str || self
62
63
  end
63
64
 
@@ -85,9 +86,9 @@ class String
85
86
 
86
87
  def parameterize(separator: '-')
87
88
  str = dup
88
- str = str.underscore!
89
- str = str.gsub!(/\s+/, separator)
90
- str = str.downcase!
89
+ str.underscore!
90
+ str.gsub!(/\s+/, separator)
91
+ str.downcase!
91
92
  str || self
92
93
  end
93
94
 
@@ -112,9 +113,9 @@ class String
112
113
 
113
114
  def titleize
114
115
  str = dup
115
- str = str.underscore!
116
- str = str.humanize!
117
- str = str.gsub!(/\b(?<!['’`])[a-z]/) { $&.capitalize }
116
+ str.underscore!
117
+ str.humanize!
118
+ str.gsub!(/\b(?<!['’`])[a-z]/) { $&.capitalize }
118
119
  str || self
119
120
  end
120
121
 
@@ -145,10 +146,6 @@ class String
145
146
  # rubocop:enable Metrics/MethodLength, Metrics/PerceivedComplexity
146
147
  # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity
147
148
 
148
- def transliterate
149
- TRANSLITERATIONS.each_with_object(dup) { |(k, v), s| s.gsub!(k, v) }
150
- end
151
-
152
149
  def truncate(truncate_at, options = {})
153
150
  return self unless length > truncate_at
154
151
 
@@ -168,12 +165,12 @@ class String
168
165
 
169
166
  def underscore
170
167
  str = dup
171
- str = str.camelize!
172
- str = str.gsub!(/::/, '/')
173
- str = str.gsub!(/([A-Z\d]+)([A-Z][a-z])/, '\1_\2')
174
- str = str.gsub!(/([a-z\d])([A-Z])/, '\1_\2')
175
- str = str.tr!('-', '_')
176
- str = str.downcase!
168
+ str.camelize!
169
+ str.gsub!(/::/, '/')
170
+ str.gsub!(/([A-Z\d]+)([A-Z][a-z])/, '\1_\2')
171
+ str.gsub!(/([a-z\d])([A-Z])/, '\1_\2')
172
+ str.tr!('-', '_')
173
+ str.downcase!
177
174
  str || self
178
175
  end
179
176
 
@@ -5,7 +5,7 @@ if Lite::Ruby.configuration.monkey_patches.include?('string')
5
5
 
6
6
  class String
7
7
 
8
- TRANSLITERATIONS ||= {
8
+ TRANSLITERATIONS = {
9
9
  'À' => 'A', 'Á' => 'A', 'Â' => 'A', 'Ã' => 'A', 'Ä' => 'A', 'Å' => 'A', 'Æ' => 'Ae',
10
10
  'Ç' => 'C', 'È' => 'E', 'É' => 'E', 'Ê' => 'E', 'Ë' => 'E', 'Ì' => 'I', 'Í' => 'I',
11
11
  'Î' => 'I', 'Ï' => 'I', 'Ð' => 'D', 'Ñ' => 'N', 'Ò' => 'O', 'Ó' => 'O', 'Ô' => 'O',
@@ -393,8 +393,12 @@ if Lite::Ruby.configuration.monkey_patches.include?('string')
393
393
  replace(sort)
394
394
  end
395
395
 
396
- def transliterate!
397
- replace(transliterate)
396
+ def transliterize
397
+ TRANSLITERATIONS.each_with_object(dup) { |(k, v), s| s.gsub!(k, v) }
398
+ end
399
+
400
+ def transliterize!
401
+ replace(transliterize)
398
402
  end
399
403
 
400
404
  def titleize!
@@ -3,7 +3,7 @@
3
3
  module Lite
4
4
  module Ruby
5
5
 
6
- VERSION ||= '1.1.0'
6
+ VERSION = '1.1.5'
7
7
 
8
8
  end
9
9
  end
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.1.0
4
+ version: 1.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juan Gomez
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-11-06 00:00:00.000000000 Z
11
+ date: 2021-02-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -208,7 +208,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
208
208
  - !ruby/object:Gem::Version
209
209
  version: '0'
210
210
  requirements: []
211
- rubygems_version: 3.1.4
211
+ rubygems_version: 3.2.9
212
212
  signing_key:
213
213
  specification_version: 4
214
214
  summary: Collection of useful Ruby methods for its primitive classes