lite-ruby 1.0.3 → 1.0.4

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: 584c043366fc46d0dd18625a51c1e0af82deeedd1e7a1b4ab7c2370930ec25b8
4
- data.tar.gz: c89470cb71fc78bdb60dda1693885ccdd2fdb9b8d40e505b9ef52748345ac04e
3
+ metadata.gz: 04000606ae7be2f1ccd5eabce5505152245c7d887831b1cf5d8b4fb314eaa493
4
+ data.tar.gz: 6475eda4f943b7eb690b94712fad42ed0ed56801750c3806a31fcb71b3c7c509
5
5
  SHA512:
6
- metadata.gz: 1664a08d8db3007c3fb3be9818e03d82a329d2413a48f92d642cc239848a7ee7ee9368564c71f0fad83652ae0fb62584698b15542c159f600c0e9542a6c23c33
7
- data.tar.gz: 95aa576daabe9e60cbc2704b53fbcd306c17b17246f09a5cb64dcd0a9f49d8186d4245f10d0d95f28dcd51e6e0b965d014394eaa005f46a4c1d3e948f549b09d
6
+ metadata.gz: 01b1a425b1b5e7c9c821dade32a826c2b655028c32bd70a149a573d113d509a36ffb168ed0e9a30e088611bd3cf4bd255c7d5c7294f05fb310d84b89e298407a
7
+ data.tar.gz: 8707863ed5227904179e70b77996a31680f18d8a12e86893ed9c0e492165905deeaead2f5c2477c9ff77151f73188513cd69ad21aacaaaad5a1f2956a679c444
@@ -22,6 +22,9 @@ Metrics/ClassLength:
22
22
  Enabled: false
23
23
  Metrics/ModuleLength:
24
24
  Enabled: false
25
+ RSpec/DescribeClass:
26
+ Exclude:
27
+ - 'spec/lite/ruby/boolean_spec.rb'
25
28
  RSpec/ExampleLength:
26
29
  Enabled: false
27
30
  RSpec/MultipleExpectations:
@@ -6,6 +6,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [1.0.4] - 2019-08-09
10
+ ### Added
11
+ - Added more boolean value checks
12
+ - Added Numeric => `markdown_percentage`
13
+ - Added Numeric => `markup_percentage`
14
+ - Added Object => `is_any?`
15
+ - Added Object => `to_bool`
16
+ - Added String => `dedupe`
17
+ ### Changed
18
+ - Move boolean classes to its own file
19
+
9
20
  ## [1.0.3] - 2019-07-30
10
21
  ### Added
11
22
  - Added String => `non_possessive`
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- lite-ruby (1.0.3)
4
+ lite-ruby (1.0.4)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -57,7 +57,7 @@ GEM
57
57
  rails-dom-testing (2.0.3)
58
58
  activesupport (>= 4.2.0)
59
59
  nokogiri (>= 1.6)
60
- rails-html-sanitizer (1.0.4)
60
+ rails-html-sanitizer (1.2.0)
61
61
  loofah (~> 2.2, >= 2.2.2)
62
62
  railties (5.2.3)
63
63
  actionpack (= 5.2.3)
@@ -80,7 +80,7 @@ GEM
80
80
  diff-lcs (>= 1.2.0, < 2.0)
81
81
  rspec-support (~> 3.8.0)
82
82
  rspec-support (3.8.2)
83
- rubocop (0.73.0)
83
+ rubocop (0.74.0)
84
84
  jaro_winkler (~> 1.5.1)
85
85
  parallel (~> 1.10)
86
86
  parser (>= 2.6)
@@ -89,7 +89,7 @@ GEM
89
89
  unicode-display_width (>= 1.4.0, < 1.7)
90
90
  rubocop-performance (1.4.1)
91
91
  rubocop (>= 0.71.0)
92
- rubocop-rspec (1.34.0)
92
+ rubocop-rspec (1.35.0)
93
93
  rubocop (>= 0.60.0)
94
94
  ruby-progressbar (1.10.1)
95
95
  ruby_parser (3.13.1)
data/README.md CHANGED
@@ -38,7 +38,8 @@ Or install it yourself as:
38
38
  ```ruby
39
39
  Lite::Ruby.configure do |config|
40
40
  config.monkey_patches = %w[
41
- array date enumerable hash integer kernel numeric object open_struct range string struct time
41
+ array boolean date enumerable hash integer kernel numeric object open_struct range string
42
+ struct time
42
43
  ]
43
44
  end
44
45
  ```
@@ -46,6 +47,7 @@ end
46
47
  ## Extensions
47
48
 
48
49
  * [Array](https://github.com/drexed/lite-ruby/blob/master/docs/ARRAY.md)
50
+ * [Boolean](https://github.com/drexed/lite-ruby/blob/master/docs/BOOLEAN.md)
49
51
  * [Date](https://github.com/drexed/lite-ruby/blob/master/docs/DATE.md)
50
52
  * [Enumerable](https://github.com/drexed/lite-ruby/blob/master/docs/ENUMERABLE.md)
51
53
  * [Hash](https://github.com/drexed/lite-ruby/blob/master/docs/HASH.md)
@@ -66,6 +68,7 @@ The following are highly recommended 3rd-party extensions to supplement your wor
66
68
  * **Performance:** Escape Utils - https://github.com/brianmario/escape_utils
67
69
  * **Performance:** Fast Blank - https://github.com/SamSaffron/fast_blank
68
70
  * **Extensions:** Facets - https://github.com/rubyworks/facets
71
+ * **Extensions:** Finishing Moves - https://github.com/forgecrafted/finishing_moves
69
72
 
70
73
  ## Port
71
74
 
@@ -0,0 +1,19 @@
1
+ # Boolean
2
+
3
+ `to_bool` aka `to_b`
4
+ ------
5
+ Returns self.
6
+
7
+ ```ruby
8
+ true.to_bool #=> true
9
+ false.to_b #=> false
10
+ ```
11
+
12
+ `to_i`
13
+ ------
14
+ Returns the integer representation of a boolean.
15
+
16
+ ```ruby
17
+ true.to_i #=> 1
18
+ false.to_i #=> 0
19
+ ```
@@ -159,6 +159,22 @@ Returns if self is less than or equal to n.
159
159
  3.less_than_or_equal_to?(4) #=> true
160
160
  ```
161
161
 
162
+ `markdown_percentage`
163
+ ------
164
+ Returns the difference of a number and a percentage of it.
165
+
166
+ ```ruby
167
+ 4.markdown_percentage(25) #=> 3
168
+ ```
169
+
170
+ `markup_percentage`
171
+ ------
172
+ Returns the sum of a number and a percentage of it.
173
+
174
+ ```ruby
175
+ 4.markup_percentage(25) #=> 5
176
+ ```
177
+
162
178
  `multiply`
163
179
  ------
164
180
  Returns the multiplication of two numbers.
@@ -59,7 +59,7 @@ true.false? #=> false
59
59
 
60
60
  `falsey?`
61
61
  ------
62
- Returns if an object is `false`, `nil`, or `0`.
62
+ Returns if an object is `0 f false n no off`.
63
63
 
64
64
  ```ruby
65
65
  false.falsey? #=> true
@@ -87,13 +87,22 @@ Returns if an object is a `hash`.
87
87
 
88
88
  `integer?`
89
89
  ------
90
- Returns if an object is a `integer`.
90
+ Returns if an object is an `integer`.
91
91
 
92
92
  ```ruby
93
93
  1.integer? #=> true
94
94
  1.0.integer? #=> false
95
95
  ```
96
96
 
97
+ `is_any?`
98
+ ------
99
+ Returns if an object is of any class type supplied.
100
+
101
+ ```ruby
102
+ 1.is_any?(String, Integer) #=> true
103
+ 0.is_any?(String, Symbol) #=> false
104
+ ```
105
+
97
106
  `numeric?`
98
107
  ------
99
108
  Returns if an object is `numeric`.
@@ -270,6 +279,16 @@ Time.now.time? #=> true
270
279
  'foo'.time? #=> false
271
280
  ```
272
281
 
282
+ `to_bool` aka `to_b`
283
+ ------
284
+ Returns a `true` or `false` value if it can be converted to a boolean, else nil.
285
+
286
+ ```ruby
287
+ true.to_bool #=> true
288
+ '0'.to_bool #=> false
289
+ 'A'.to_bool #=> nil
290
+ ```
291
+
273
292
  `true?`
274
293
  ------
275
294
  Returns if an object is `true`.
@@ -281,7 +300,7 @@ false.true? #=> false
281
300
 
282
301
  `truthy?`
283
302
  ------
284
- Returns if an object is `true` or `1`.
303
+ Returns if an object is `1 t true y yes on`.
285
304
 
286
305
  ```ruby
287
306
  true.truthy? #=> true
@@ -99,6 +99,15 @@ Removes the rightmost segment from the constant expression in the string.
99
99
  ''.deconstantize # => ''
100
100
  ```
101
101
 
102
+ `dedupe(!)`
103
+ ------
104
+ Removes multiple concurrent occurrences of a character and reduce them to a single occurrence.
105
+
106
+ ```ruby
107
+ '/foo//bar////baz/bing'.dedupe('/') #=> '/foo/bar/baz/bing'
108
+ 'foo___bar_baz---bing'.dedupe!('-_') #=> 'foo_bar_baz-bing'
109
+ ```
110
+
102
111
  `demodulize(!)`
103
112
  ------
104
113
  Removes the module part from the expression in the string.
@@ -2,6 +2,7 @@
2
2
 
3
3
  Lite::Ruby.configure do |config|
4
4
  config.monkey_patches = %w[
5
- array date enumerable hash integer kernel numeric object open_struct range string struct time
5
+ array boolean date enumerable hash integer kernel numeric object open_struct range string
6
+ struct time
6
7
  ]
7
8
  end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ class FalseClass
4
+
5
+ def to_bool
6
+ self
7
+ end
8
+
9
+ alias to_b to_bool
10
+
11
+ def to_i
12
+ 0
13
+ end
14
+
15
+ end
16
+
17
+ class TrueClass
18
+
19
+ def to_bool
20
+ self
21
+ end
22
+
23
+ alias to_b to_bool
24
+
25
+ def to_i
26
+ 1
27
+ end
28
+
29
+ end
@@ -9,8 +9,8 @@ module Lite
9
9
 
10
10
  def initialize
11
11
  @monkey_patches = %w[
12
- array date enumerable hash integer kernel numeric object open_struct range string struct
13
- time
12
+ array boolean date enumerable hash integer kernel numeric object open_struct range string
13
+ struct time
14
14
  ]
15
15
  end
16
16
 
@@ -120,6 +120,14 @@ class Numeric
120
120
 
121
121
  alias lteq? less_than_or_equal_to?
122
122
 
123
+ def markdown_percentage(percent)
124
+ to_f * ((100.0 - percent.to_f) / 100.0)
125
+ end
126
+
127
+ def markup_percentage(percent)
128
+ to_f + (to_f * (percent.to_f / 100.0))
129
+ end
130
+
123
131
  def multiply(num)
124
132
  self * num
125
133
  end
@@ -2,11 +2,11 @@
2
2
 
3
3
  class Object
4
4
 
5
- FALSE_VALUES ||= [
6
- false, 0, '0', 'false', 'FALSE', 'f', 'F'
5
+ FALSE_VALUES ||= %w[
6
+ 0 f false n no off
7
7
  ].freeze
8
- TRUE_VALUES ||= [
9
- true, 1, '1', 'true', 'TRUE', 't', 'T'
8
+ TRUE_VALUES ||= %w[
9
+ 1 t true y yes on
10
10
  ].freeze
11
11
 
12
12
  def array?
@@ -26,7 +26,8 @@ class Object
26
26
  end
27
27
 
28
28
  def boolean?
29
- TRUE_VALUES.include?(self) || FALSE_VALUES.include?(self)
29
+ val = to_s.downcase
30
+ TRUE_VALUES.include?(val) || FALSE_VALUES.include?(val)
30
31
  end
31
32
 
32
33
  def date?
@@ -40,7 +41,7 @@ class Object
40
41
  # rubocop:enable Style/YodaCondition
41
42
 
42
43
  def falsey?
43
- nil? || FALSE_VALUES.include?(self)
44
+ nil? || FALSE_VALUES.include?(to_s.downcase)
44
45
  end
45
46
 
46
47
  def float?
@@ -55,6 +56,12 @@ class Object
55
56
  is_a?(Integer)
56
57
  end
57
58
 
59
+ # rubocop:disable Naming/PredicateName
60
+ def is_any?(*objs)
61
+ objs.any? { |obj| is_a?(obj) }
62
+ end
63
+ # rubocop:enable Naming/PredicateName
64
+
58
65
  def numeral?
59
66
  !to_s.match(/\A[+-]?\d+?(\.\d+)?\Z/).nil?
60
67
  end
@@ -129,6 +136,15 @@ class Object
129
136
  is_a?(Time)
130
137
  end
131
138
 
139
+ def to_bool
140
+ return true if truthy?
141
+ return false if falsey?
142
+
143
+ nil
144
+ end
145
+
146
+ alias to_b to_bool
147
+
132
148
  # rubocop:disable Style/YodaCondition
133
149
  def true?
134
150
  true == self
@@ -136,7 +152,7 @@ class Object
136
152
  # rubocop:enable Style/YodaCondition
137
153
 
138
154
  def truthy?
139
- TRUE_VALUES.include?(self)
155
+ TRUE_VALUES.include?(to_s.downcase)
140
156
  end
141
157
 
142
158
  def try(*obj, &block)
@@ -164,19 +180,3 @@ class Object
164
180
  end
165
181
 
166
182
  end
167
-
168
- class FalseClass
169
-
170
- def to_i
171
- 0
172
- end
173
-
174
- end
175
-
176
- class TrueClass
177
-
178
- def to_i
179
- 1
180
- end
181
-
182
- end
@@ -104,6 +104,15 @@ class String
104
104
  replace(deconstantize)
105
105
  end
106
106
 
107
+ def dedupe(pattern)
108
+ dup.dedupe!(pattern)
109
+ end
110
+
111
+ def dedupe!(pattern)
112
+ pattern.each_char { |char| gsub!(/#{Regexp.escape(char)}{2,}/, char) }
113
+ self
114
+ end
115
+
107
116
  def demodulize
108
117
  gsub(/^.*::/, '')
109
118
  end
@@ -3,7 +3,7 @@
3
3
  module Lite
4
4
  module Ruby
5
5
 
6
- VERSION ||= '1.0.3'
6
+ VERSION ||= '1.0.4'
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.0.3
4
+ version: 1.0.4
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-07-30 00:00:00.000000000 Z
11
+ date: 2019-08-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -145,6 +145,7 @@ files:
145
145
  - bin/console
146
146
  - bin/setup
147
147
  - docs/ARRAY.md
148
+ - docs/BOOLEAN.md
148
149
  - docs/DATE.md
149
150
  - docs/ENUMERABLE.md
150
151
  - docs/HASH.md
@@ -161,6 +162,7 @@ files:
161
162
  - lib/generators/lite/ruby/templates/install.rb
162
163
  - lib/lite/ruby.rb
163
164
  - lib/lite/ruby/array.rb
165
+ - lib/lite/ruby/boolean.rb
164
166
  - lib/lite/ruby/configuration.rb
165
167
  - lib/lite/ruby/date.rb
166
168
  - lib/lite/ruby/enumerable.rb