lite-ruby 2.0.4 → 2.1.0

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: ecd2c3a61307be32e0e81fc96bd6ea7c6dd66b944c42f1a9bac69789c897ef58
4
- data.tar.gz: a17ee24dc3b3fbd69f30304b179a13aa91e106f5531254a82613580f9988bfd3
3
+ metadata.gz: 929161abda8b513b17abcca23b3e979815173803159300b09b439c90d0cd350e
4
+ data.tar.gz: e5424b301619fc8c69715095ec50cf78d427c9d5036268ad7112aea491aef761
5
5
  SHA512:
6
- metadata.gz: a9b44c14b3c8b5532449b45acf3d919d4680f693896167fbdb50a2681f0370604bc07250f38c1b42cfbb17687a931c666a3dc1f2ee2577afd78e33a70dae4ea4
7
- data.tar.gz: b2e38bed720eb8756adaac18c3a405464c364b42c922fa752d50ef3e261fbba6080911916bfe7f071fb1659da3fcaaeba97590e0fa0d235212328675bd09f703
6
+ metadata.gz: 84e02a4af6d6433ea904f4a3ffc6c79fd8e4864d226107fb1946ff02b2a058334bf5f8aabfea6f352fd9b37fe21b0ea3bdf5cec23cbe7ef0142cbf9475ac1702
7
+ data.tar.gz: 7d6468c886ad49b110023f9ae3f29fd4a3ecb2823f460ea781ae340bf3a98fb8b211faa392e02f4d21942582bf351ba8a3ac76c19320eb691c0bd09f778b0229
data/.rubocop.yml CHANGED
@@ -7,6 +7,8 @@ AllCops:
7
7
  NewCops: enable
8
8
  DisplayCopNames: true
9
9
  DisplayStyleGuide: true
10
+ Gemspec/RequireMFA:
11
+ Enabled: false
10
12
  Gemspec/RequiredRubyVersion:
11
13
  Enabled: false
12
14
  Layout/EmptyLinesAroundBlockBody:
@@ -43,6 +45,8 @@ RSpec/DescribeClass:
43
45
  - 'spec/lite/ruby/boolean_spec.rb'
44
46
  RSpec/ExampleLength:
45
47
  Enabled: false
48
+ RSpec/ExcessiveDocstringSpacing:
49
+ Enabled: false
46
50
  RSpec/MultipleExpectations:
47
51
  Enabled: false
48
52
  Style/ArgumentsForwarding:
@@ -59,6 +63,8 @@ Style/HashTransformKeys:
59
63
  Enabled: false
60
64
  Style/HashTransformValues:
61
65
  Enabled: false
66
+ Style/OpenStructUse:
67
+ Enabled: false
62
68
  Style/PerlBackrefs:
63
69
  Enabled: false
64
70
  Style/RedundantRegexpCharacterClass:
data/CHANGELOG.md CHANGED
@@ -6,6 +6,31 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [2.1.0] - 2022-02-09
10
+ ### Added
11
+ - Added String `domain` to include protocol (more inline with URI method names) [BREAKING]
12
+ - Added Date => `day_day` format
13
+ - Added Date => `day_day_abbr` format
14
+ - Added Date => `day_day_iso` format
15
+ - Added Date => `day_date` format
16
+ - Added Date => `day_date_abbr` format
17
+ - Added Date => `day_date_iso` format
18
+ ### Changed
19
+ - Rename String `domain` to `host`
20
+ - String `host` to use URI instead of a regexp
21
+
22
+ ## [2.0.7] - 2021-09-29
23
+ ### Added
24
+ - Added Range => `bounds`
25
+
26
+ ## [2.0.6] - 2021-09-26
27
+ ### Changed
28
+ - Added DateTimeHelper => added missing comma to imperical date
29
+
30
+ ## [2.0.5] - 2021-08-12
31
+ ### Changed
32
+ - Added DateTimeHelper => remove unit fallback to `stamp`
33
+
9
34
  ## [2.0.4] - 2021-08-12
10
35
  ### Changed
11
36
  - Added DateTimeHelper => add unit fallback to `stamp`
data/Gemfile.lock CHANGED
@@ -1,36 +1,35 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- lite-ruby (2.0.4)
4
+ lite-ruby (2.1.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
- actionpack (6.1.4)
10
- actionview (= 6.1.4)
11
- activesupport (= 6.1.4)
12
- rack (~> 2.0, >= 2.0.9)
9
+ actionpack (7.0.2)
10
+ actionview (= 7.0.2)
11
+ activesupport (= 7.0.2)
12
+ rack (~> 2.0, >= 2.2.0)
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.1.4)
17
- activesupport (= 6.1.4)
16
+ actionview (7.0.2)
17
+ activesupport (= 7.0.2)
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.1.4)
22
+ activesupport (7.0.2)
23
23
  concurrent-ruby (~> 1.0, >= 1.0.2)
24
24
  i18n (>= 1.6, < 2)
25
25
  minitest (>= 5.1)
26
26
  tzinfo (~> 2.0)
27
- zeitwerk (~> 2.3)
28
27
  ast (2.4.2)
29
28
  builder (3.2.4)
30
29
  colorize (0.8.1)
31
30
  concurrent-ruby (1.1.9)
32
31
  crass (1.0.6)
33
- diff-lcs (1.4.4)
32
+ diff-lcs (1.5.0)
34
33
  erubi (1.10.0)
35
34
  fasterer (0.9.0)
36
35
  colorize (~> 0.7)
@@ -38,80 +37,80 @@ GEM
38
37
  generator_spec (0.9.4)
39
38
  activesupport (>= 3.0.0)
40
39
  railties (>= 3.0.0)
41
- i18n (1.8.10)
40
+ i18n (1.9.1)
42
41
  concurrent-ruby (~> 1.0)
43
- loofah (2.12.0)
42
+ loofah (2.13.0)
44
43
  crass (~> 1.0.2)
45
44
  nokogiri (>= 1.5.9)
46
45
  method_source (1.0.0)
47
- mini_portile2 (2.6.1)
48
- minitest (5.14.4)
49
- nokogiri (1.12.3)
50
- mini_portile2 (~> 2.6.1)
46
+ mini_portile2 (2.7.1)
47
+ minitest (5.15.0)
48
+ nokogiri (1.13.1)
49
+ mini_portile2 (~> 2.7.0)
51
50
  racc (~> 1.4)
52
- parallel (1.20.1)
53
- parser (3.0.2.0)
51
+ parallel (1.21.0)
52
+ parser (3.1.0.0)
54
53
  ast (~> 2.4.1)
55
- racc (1.5.2)
54
+ racc (1.6.0)
56
55
  rack (2.2.3)
57
56
  rack-test (1.1.0)
58
57
  rack (>= 1.0, < 3)
59
58
  rails-dom-testing (2.0.3)
60
59
  activesupport (>= 4.2.0)
61
60
  nokogiri (>= 1.6)
62
- rails-html-sanitizer (1.3.0)
61
+ rails-html-sanitizer (1.4.2)
63
62
  loofah (~> 2.3)
64
- railties (6.1.4)
65
- actionpack (= 6.1.4)
66
- activesupport (= 6.1.4)
63
+ railties (7.0.2)
64
+ actionpack (= 7.0.2)
65
+ activesupport (= 7.0.2)
67
66
  method_source
68
- rake (>= 0.13)
67
+ rake (>= 12.2)
69
68
  thor (~> 1.0)
70
- rainbow (3.0.0)
69
+ zeitwerk (~> 2.5)
70
+ rainbow (3.1.1)
71
71
  rake (13.0.6)
72
- regexp_parser (2.1.1)
72
+ regexp_parser (2.2.0)
73
73
  rexml (3.2.5)
74
- rspec (3.10.0)
75
- rspec-core (~> 3.10.0)
76
- rspec-expectations (~> 3.10.0)
77
- rspec-mocks (~> 3.10.0)
78
- rspec-core (3.10.1)
79
- rspec-support (~> 3.10.0)
80
- rspec-expectations (3.10.1)
74
+ rspec (3.11.0)
75
+ rspec-core (~> 3.11.0)
76
+ rspec-expectations (~> 3.11.0)
77
+ rspec-mocks (~> 3.11.0)
78
+ rspec-core (3.11.0)
79
+ rspec-support (~> 3.11.0)
80
+ rspec-expectations (3.11.0)
81
81
  diff-lcs (>= 1.2.0, < 2.0)
82
- rspec-support (~> 3.10.0)
83
- rspec-mocks (3.10.2)
82
+ rspec-support (~> 3.11.0)
83
+ rspec-mocks (3.11.0)
84
84
  diff-lcs (>= 1.2.0, < 2.0)
85
- rspec-support (~> 3.10.0)
86
- rspec-support (3.10.2)
87
- rubocop (1.19.0)
85
+ rspec-support (~> 3.11.0)
86
+ rspec-support (3.11.0)
87
+ rubocop (1.25.1)
88
88
  parallel (~> 1.10)
89
- parser (>= 3.0.0.0)
89
+ parser (>= 3.1.0.0)
90
90
  rainbow (>= 2.2.2, < 4.0)
91
91
  regexp_parser (>= 1.8, < 3.0)
92
92
  rexml
93
- rubocop-ast (>= 1.9.1, < 2.0)
93
+ rubocop-ast (>= 1.15.1, < 2.0)
94
94
  ruby-progressbar (~> 1.7)
95
95
  unicode-display_width (>= 1.4.0, < 3.0)
96
- rubocop-ast (1.10.0)
96
+ rubocop-ast (1.15.1)
97
97
  parser (>= 3.0.1.1)
98
- rubocop-performance (1.11.4)
98
+ rubocop-performance (1.13.2)
99
99
  rubocop (>= 1.7.0, < 2.0)
100
100
  rubocop-ast (>= 0.4.0)
101
101
  rubocop-rake (0.6.0)
102
102
  rubocop (~> 1.0)
103
- rubocop-rspec (2.4.0)
104
- rubocop (~> 1.0)
105
- rubocop-ast (>= 1.1.0)
103
+ rubocop-rspec (2.8.0)
104
+ rubocop (~> 1.19)
106
105
  ruby-progressbar (1.11.0)
107
- ruby_parser (3.17.0)
108
- sexp_processor (~> 4.15, >= 4.15.1)
109
- sexp_processor (4.15.3)
110
- thor (1.1.0)
106
+ ruby_parser (3.18.1)
107
+ sexp_processor (~> 4.16)
108
+ sexp_processor (4.16.0)
109
+ thor (1.2.1)
111
110
  tzinfo (2.0.4)
112
111
  concurrent-ruby (~> 1.0)
113
- unicode-display_width (2.0.0)
114
- zeitwerk (2.4.2)
112
+ unicode-display_width (2.1.0)
113
+ zeitwerk (2.5.4)
115
114
 
116
115
  PLATFORMS
117
116
  ruby
@@ -129,4 +128,4 @@ DEPENDENCIES
129
128
  rubocop-rspec
130
129
 
131
130
  BUNDLED WITH
132
- 2.2.25
131
+ 2.3.4
data/docs/DATE.md CHANGED
@@ -37,7 +37,7 @@ Converts a `date` object to a predefined format.
37
37
 
38
38
  | Directive | Type | Key | `strftime` | Result |
39
39
  | --- | --- | --- | --- | --- |
40
- | Weekday | Zero-padded | `weekday`, `:weekday_padded` | %d | (01..31) |
40
+ | Weekday | Zero-padded | `:weekday`, `:weekday_padded` | %d | (01..31) |
41
41
  | Weekday | Blank-padded | `:weekday_blank` | %_d | ( 1..31) |
42
42
  | Weekday | Unpadded | `:weekday_unpadded` | %-d | (1..31) |
43
43
  | Weekday | Name | `:weekday_name` | %A | Sunday |
@@ -72,6 +72,12 @@ Converts a `date` object to a predefined format.
72
72
  | Combo | Date | `:date` | %B %-d, %Y | January 9, 2014 |
73
73
  | Combo | Date | `:date_abbr` | %b %-d, %Y | Jan 9, 2014 |
74
74
  | Combo | Date | `:date_iso` | %Y-%m-%d | 2014-01-09 |
75
+ | Combo | Day month day | `:day` | %A, %B %-d | Sunday, January 9 |
76
+ | Combo | Day month day | `:day_abbr` | %a, %b %-d | Sun, Jan 9 |
77
+ | Combo | Day month day | `:day_iso` | %a, %m-%d | Sun, 01-09 |
78
+ | Combo | Day date | `:day_date` | %A, %B %-d, %Y | Sunday, January 9, 2014 |
79
+ | Combo | Day date | `:day_date_abbr` | %a, %b %-d, %Y | Sun, Jan 9, 2014 |
80
+ | Combo | Day date | `:day_date_iso` | %a, %Y-%m-%d | Sun, 2014-01-09 |
75
81
 
76
82
  ```ruby
77
83
  Date.today.to_format(:year) #=> '2014'
data/docs/RANGE.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Range
2
2
 
3
+ `bounds`
4
+ ------
5
+ Returns the first and last values of a range.
6
+
7
+ ```ruby
8
+ (1..9).bounds #=> [1, 9]
9
+ ```
10
+
3
11
  `combine`
4
12
  ------
5
13
  Returns two concatenated ranges.
data/docs/STRING.md CHANGED
@@ -110,11 +110,12 @@ Removes the module part from the expression in the string.
110
110
 
111
111
  `domain`
112
112
  ------
113
- Extracts the domain name from a URL.
113
+ Extracts the domain from a URL.
114
114
 
115
115
  ```ruby
116
- 'http://www.example.com/fake-page'.domain #=> 'www.example.com'
117
- 'example string'.domain #=> 'example string'
116
+ 'http://www.example.com/fake-page'.domain #=> 'http://www.example.com'
117
+ 'www.example.com'.domain #=> nil
118
+ 'example string'.domain #=> nil
118
119
  ```
119
120
 
120
121
  `downcase?`
@@ -173,6 +174,15 @@ Returns an interpolated string that allows for options.
173
174
  '%d + %d'.format([1, 2]) #=> '1 + 2'
174
175
  ```
175
176
 
177
+ `fragment`
178
+ ------
179
+ Extracts the fragment from a URL.
180
+
181
+ ```ruby
182
+ 'http://www.example.com/fake-page?id=30&limit=5#time=1305298413'.fragment #=> 'time=1305298413'
183
+ 'example string'.fragment #=> nil
184
+ ```
185
+
176
186
  `from`
177
187
  ------
178
188
  Returns a substring from the given position to the end of the string. If the position is negative, it is counted from the end of the string.
@@ -190,6 +200,16 @@ Capitalizes each word.
190
200
  ' example test-sample '.headerize #=> 'Example Test-sample'
191
201
  ```
192
202
 
203
+ `host`
204
+ ------
205
+ Extracts the host from a URL.
206
+
207
+ ```ruby
208
+ 'http://www.example.com/fake-page'.host #=> 'www.example.com'
209
+ 'www.example.com'.host #=> nil
210
+ 'example string'.host #=> nil
211
+ ```
212
+
193
213
  `humanize(!)`
194
214
  ------
195
215
  Transforms a string to a human readable string.
@@ -321,6 +341,16 @@ Makes a string suitable for a dashed url parameter string.
321
341
  'example_string'.parameterize(separator: '?') #=> 'example?string'
322
342
  ```
323
343
 
344
+ `path`
345
+ ------
346
+ Extracts the path from a URL.
347
+
348
+ ```ruby
349
+ 'http://www.example.com/fake-page?id=30&limit=5#time=1305298413'.path #=> '/fake-page'
350
+ '/fake-page'.path #=> '/fake-page'
351
+ 'example string'.path #=> nil
352
+ ```
353
+
324
354
  `pathize(!)`
325
355
  ------
326
356
  Transforms a string to a suitable file path.
@@ -374,6 +404,15 @@ Concats string to self.
374
404
  'test'.push('er') #=> 'tester'
375
405
  ```
376
406
 
407
+ `query`
408
+ ------
409
+ Extracts the query from a URL.
410
+
411
+ ```ruby
412
+ 'http://www.example.com/fake-page?id=30&limit=5#time=1305298413'.query #=> 'id=30&limit=5'
413
+ 'example string'.query #=> nil
414
+ ```
415
+
377
416
  `quote(!)`
378
417
  ------
379
418
  Adds a given quote type to the string.
@@ -432,6 +471,15 @@ Removes a random value and returns that value.
432
471
  'this thing that'.sample(' thing ') #=> 'that'
433
472
  ```
434
473
 
474
+ `scheme`
475
+ ------
476
+ Extracts the scheme from a URL.
477
+
478
+ ```ruby
479
+ 'http://www.example.com/fake-page?id=30&limit=5#time=1305298413'.scheme #=> 'http'
480
+ 'example string'.scheme #=> nil
481
+ ```
482
+
435
483
  `shift(!)`
436
484
  ------
437
485
  Removes the first instance of a string.
data/docs/TIME.md CHANGED
@@ -97,6 +97,24 @@ Converts a `time` object to a predefined format.
97
97
  | Combo | 12h datetime | `:datetime12_tzn` | %B %-d, %Y %H:%M %Z | January 9, 2014 12:31 am UTC |
98
98
  | Combo | 12h datetime | `:datetime12_abbr_tzn` | %b %-d, %Y %H:%M %Z | Jan 9, 2014 12:31 am UTC |
99
99
  | Combo | 12h datetime | `:datetime12_iso_tzn` | %Y-%m-%d %H:%M %z | 2014-01-09 12:31 am +0000 |
100
+ | Combo | Day 24h daytime | `:day_daytime` | %B %-d %H:%M | Sunday, January 9 00:31 |
101
+ | Combo | Day 24h daytime | `:day_daytime_abbr` | %b %-d %H:%M | Sun, Jan 9 00:31 |
102
+ | Combo | Day 24h daytime | `:day_daytime_iso` | %m-%d %H:%M | Sun, 01-09 00:31 |
103
+ | Combo | Day 12h daytime | `:day_daytime12` | %B %-d %H:%M | Sunday, January 9 12:31 am |
104
+ | Combo | Day 12h daytime | `:day_daytime12_abbr` | %b %-d %H:%M | Sun, Jan 9 12:31 am |
105
+ | Combo | Day 12h daytime | `:day_daytime12_iso` | %m-%d %H:%M | Sun, 01-09 12:31 am |
106
+ | Combo | Day 24h datetime | `:day_datetime` | %B %-d, %Y %H:%M | Sunday, January 9, 2014 00:31 |
107
+ | Combo | Day 24h datetime | `:day_datetime_abbr` | %b %-d, %Y %H:%M | Sun, Jan 9, 2014 00:31 |
108
+ | Combo | Day 24h datetime | `:day_datetime_iso` | %Y-%m-%d %H:%M | Sun, 2014-01-09 00:31 |
109
+ | Combo | Day 24h datetime | `:day_datetime_tzn` | %B %-d, %Y %H:%M %Z | Sunday, January 9, 2014 00:31 UTC |
110
+ | Combo | Day 24h datetime | `:day_datetime_abbr_tzn` | %b %-d, %Y %H:%M %Z | Sun, Jan 9, 2014 00:31 UTC |
111
+ | Combo | Day 24h datetime | `:day_datetime_iso_tzn` | %Y-%m-%d %H:%M %z | Sun, 2014-01-09 00:31 +0000 |
112
+ | Combo | Day 12h datetime | `:day_datetime12` | %B %-d, %Y %H:%M | Sunday, January 9, 2014 12:31 am |
113
+ | Combo | Day 12h datetime | `:day_datetime12_abbr` | %b %-d, %Y %H:%M | Sun, Jan 9, 2014 12:31 am |
114
+ | Combo | Day 12h datetime | `:day_datetime12_iso` | %Y-%m-%d %H:%M | Sun, 2014-01-09 12:31 am |
115
+ | Combo | Day 12h datetime | `:day_datetime12_tzn` | %B %-d, %Y %H:%M %Z | Sun, Sunday, January 9, 2014 12:31 am UTC |
116
+ | Combo | Day 12h datetime | `:day_datetime12_abbr_tzn` | %b %-d, %Y %H:%M %Z | Sun, Jan 9, 2014 12:31 am UTC |
117
+ | Combo | Day 12h datetime | `:day_datetime12_iso_tzn` | %Y-%m-%d %H:%M %z | Sun, 2014-01-09 12:31 am +0000 |
100
118
 
101
119
  ```ruby
102
120
  Time.now.stamp(:datetime) #=> 'January 09, 2014 02:31 pm'
@@ -29,6 +29,12 @@ week_year_iso: '%V-%G'
29
29
  year_day: '%Y-%m-%d'
30
30
  year_month: '%Y-%m'
31
31
  year_week: '%G-%V'
32
- date: '%B %-d %Y'
33
- date_abbr: '%b %-d %Y'
32
+ date: '%B %-d, %Y'
33
+ date_abbr: '%b %-d, %Y'
34
34
  date_iso: '%Y-%m-%d'
35
+ day_day: '%A, %B %-d'
36
+ day_day_abbr: '%a, %b %-d'
37
+ day_day_iso: '%a, %m-%d'
38
+ day_date: '%A, %B %-d, %Y'
39
+ day_date_abbr: '%a, %b %-d, %Y'
40
+ day_date_iso: '%a, %Y-%m-%d'
@@ -28,15 +28,33 @@ daytime_iso: '%m-%d %H:%M'
28
28
  daytime12: '%B %-d %I:%M %P'
29
29
  daytime12_abbr: '%b %-d %I:%M %P'
30
30
  daytime12_iso: '%m-%d %I:%M %P'
31
- datetime: '%B %-d %Y %H:%M'
32
- datetime_abbr: '%b %-d %Y %H:%M'
31
+ datetime: '%B %-d, %Y %H:%M'
32
+ datetime_abbr: '%b %-d, %Y %H:%M'
33
33
  datetime_iso: '%Y-%m-%d %H:%M'
34
- datetime12: '%B %-d %Y %I:%M %P'
35
- datetime12_abbr: '%b %-d %Y %I:%M %P'
34
+ datetime12: '%B %-d, %Y %I:%M %P'
35
+ datetime12_abbr: '%b %-d, %Y %I:%M %P'
36
36
  datetime12_iso: '%Y-%m-%d %I:%M %P'
37
- datetime_tzn: '%B %-d %Y %H:%M %Z'
38
- datetime_abbr_tzn: '%b %-d %Y %H:%M %Z'
37
+ datetime_tzn: '%B %-d, %Y %H:%M %Z'
38
+ datetime_abbr_tzn: '%b %-d, %Y %H:%M %Z'
39
39
  datetime_iso_tzn: '%Y-%m-%d %H:%M %z'
40
- datetime12_tzn: '%B %-d %Y %I:%M %P %Z'
41
- datetime12_abbr_tzn: '%b %-d %Y %I:%M %P %Z'
40
+ datetime12_tzn: '%B %-d, %Y %I:%M %P %Z'
41
+ datetime12_abbr_tzn: '%b %-d, %Y %I:%M %P %Z'
42
42
  datetime12_iso_tzn: '%Y-%m-%d %I:%M %P %z'
43
+ day_daytime: '%A, %B %-d %H:%M'
44
+ day_daytime_abbr: '%a, %b %-d %H:%M'
45
+ day_daytime_iso: '%a, %m-%d %H:%M'
46
+ day_daytime12: '%A, %B %-d %I:%M %P'
47
+ day_daytime12_abbr: '%a, %b %-d %I:%M %P'
48
+ day_daytime12_iso: '%a, %m-%d %I:%M %P'
49
+ day_datetime: '%A, %B %-d, %Y %H:%M'
50
+ day_datetime_abbr: '%a, %b %-d, %Y %H:%M'
51
+ day_datetime_iso: '%a, %Y-%m-%d %H:%M'
52
+ day_datetime12: '%A, %B %-d, %Y %I:%M %P'
53
+ day_datetime12_abbr: '%a, %b %-d, %Y %I:%M %P'
54
+ day_datetime12_iso: '%a, %Y-%m-%d %I:%M %P'
55
+ day_datetime_tzn: '%A, %B %-d, %Y %H:%M %Z'
56
+ day_datetime_abbr_tzn: '%a, %b %-d, %Y %H:%M %Z'
57
+ day_datetime_iso_tzn: '%a, %Y-%m-%d %H:%M %z'
58
+ day_datetime12_tzn: '%A, %B %-d, %Y %I:%M %P %Z'
59
+ day_datetime12_abbr_tzn: '%a, %b %-d, %Y %I:%M %P %Z'
60
+ day_datetime12_iso_tzn: '%a, %Y-%m-%d %I:%M %P %z'
@@ -14,7 +14,7 @@ module Lite
14
14
 
15
15
  def stamp(key = nil)
16
16
  key ||= self.class::DEFAULT_STAMP
17
- strftime(self.class::STAMPS[key.to_s] || self.class::UNITS[key.to_s])
17
+ strftime(self.class::STAMPS[key.to_s])
18
18
  end
19
19
 
20
20
  alias to_format stamp
@@ -48,11 +48,9 @@ class Integer
48
48
  (0...num).inject(1) { |acc, i| (acc * (self - i)) / (i + 1) }
49
49
  end
50
50
 
51
- # rubocop:disable Lint/AmbiguousRange
52
51
  def factorial
53
52
  (1..self).inject { |acc, i| acc * i } || 0
54
53
  end
55
- # rubocop:enable Lint/AmbiguousRange
56
54
 
57
55
  def factors
58
56
  limit = Math.sqrt(self).floor
@@ -23,7 +23,7 @@ class Numeric
23
23
  if a.zero? || b.zero?
24
24
  (a - b).abs < epsilon
25
25
  else
26
- (a / b - 1).abs < epsilon
26
+ ((a / b) - 1).abs < epsilon
27
27
  end
28
28
  end
29
29
 
@@ -66,7 +66,7 @@ class Numeric
66
66
  end
67
67
 
68
68
  def fraction?
69
- fraction.to_d != 0.0.to_d
69
+ fraction.to_d != BigDecimal('0.0')
70
70
  end
71
71
 
72
72
  def greater_than?(num)
@@ -124,7 +124,7 @@ class Numeric
124
124
  end
125
125
 
126
126
  def one?
127
- to_d == 1.0.to_d
127
+ to_d == BigDecimal('1.0')
128
128
  end
129
129
 
130
130
  def ordinal
@@ -228,11 +228,9 @@ class Numeric
228
228
  "#{pad_precision(options.only(:precision))}#{unit}"
229
229
  end
230
230
 
231
- # rubocop:disable Lint/AmbiguousRange
232
231
  def to_range
233
232
  negative? ? (self..-self) : (-self..self)
234
233
  end
235
- # rubocop:enable Lint/AmbiguousRange
236
234
 
237
235
  def within?(number, epsilon = 0.01)
238
236
  return number == self if epsilon.zero?
@@ -243,7 +241,7 @@ class Numeric
243
241
  if alpha.zero? || beta.zero?
244
242
  (alpha - beta).abs < epsilon
245
243
  else
246
- (alpha / beta - 1).abs < epsilon
244
+ ((alpha / beta) - 1).abs < epsilon
247
245
  end
248
246
  end
249
247
 
@@ -2,6 +2,10 @@
2
2
 
3
3
  class Range
4
4
 
5
+ def bounds
6
+ [self.begin, self.end]
7
+ end
8
+
5
9
  def combine(other)
6
10
  to_a.concat(other.to_a)
7
11
  end
@@ -47,7 +47,7 @@ class Array
47
47
  elsif fill_with == false
48
48
  collection = self
49
49
  else
50
- padding = (number - size % number) % number
50
+ padding = (number - (size % number)) % number
51
51
  collection = dup.concat(Array.new(padding, fill_with))
52
52
  end
53
53
 
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: false
2
2
 
3
+ require 'uri' unless defined?(URI)
3
4
  require 'yaml' unless defined?(YAML)
4
5
 
5
6
  class String
@@ -54,9 +55,11 @@ class String
54
55
  end
55
56
 
56
57
  def domain
57
- return self unless self =~ %r{^(?:\w+://)?([^/?]+)(?:/|\?|$)}
58
+ return if empty?
58
59
 
59
- Regexp.last_match(1)
60
+ URI.join(self, '/').to_s.chomp('/')
61
+ rescue URI::BadURIError, URI::InvalidURIError
62
+ nil
60
63
  end
61
64
 
62
65
  def downcase?
@@ -76,6 +79,14 @@ class String
76
79
  "#{self[0, offset]}#{separator}#{self[-offset, offset]}"
77
80
  end
78
81
 
82
+ def fragment
83
+ return if empty?
84
+
85
+ URI.parse(self).fragment
86
+ rescue URI::BadURIError, URI::InvalidURIError
87
+ nil
88
+ end
89
+
79
90
  def format(*args)
80
91
  super(self, *args.flatten)
81
92
  end
@@ -88,6 +99,14 @@ class String
88
99
  replace(headerize)
89
100
  end
90
101
 
102
+ def host
103
+ return if empty?
104
+
105
+ URI.parse(self).host
106
+ rescue URI::BadURIError, URI::InvalidURIError
107
+ nil
108
+ end
109
+
91
110
  def humanize!(capitalize: true)
92
111
  replace(humanize(capitalize: capitalize))
93
112
  end
@@ -179,6 +198,14 @@ class String
179
198
  replace(parameterize(separator: separator))
180
199
  end
181
200
 
201
+ def path
202
+ return if empty?
203
+
204
+ URI.parse(self).path
205
+ rescue URI::BadURIError, URI::InvalidURIError
206
+ nil
207
+ end
208
+
182
209
  def pathize
183
210
  dup.pathize!
184
211
  end
@@ -224,6 +251,14 @@ class String
224
251
  replace(concat(string))
225
252
  end
226
253
 
254
+ def query
255
+ return if empty?
256
+
257
+ URI.parse(self).query
258
+ rescue URI::BadURIError, URI::InvalidURIError
259
+ nil
260
+ end
261
+
227
262
  # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength
228
263
  def quote(type = :double, amount = nil)
229
264
  if type.is_a?(Integer)
@@ -313,6 +348,14 @@ class String
313
348
  replace(sample(separator))
314
349
  end
315
350
 
351
+ def scheme
352
+ return if empty?
353
+
354
+ URI.parse(self).scheme
355
+ rescue URI::BadURIError, URI::InvalidURIError
356
+ nil
357
+ end
358
+
316
359
  def shift(*patterns)
317
360
  dup.shift!(*patterns)
318
361
  end
@@ -3,7 +3,7 @@
3
3
  module Lite
4
4
  module Ruby
5
5
 
6
- VERSION = '2.0.4'
6
+ VERSION = '2.1.0'
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: 2.0.4
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juan Gomez
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-08-13 00:00:00.000000000 Z
11
+ date: 2022-02-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -227,7 +227,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
227
227
  - !ruby/object:Gem::Version
228
228
  version: '0'
229
229
  requirements: []
230
- rubygems_version: 3.2.25
230
+ rubygems_version: 3.3.4
231
231
  signing_key:
232
232
  specification_version: 4
233
233
  summary: Collection of useful Ruby methods for its primitive classes