lite-ruby 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 19db11fb7da5ef86006b94cc266336955175013164f4f631cf207c607d4286e8
4
- data.tar.gz: fbe955d7730e10acafb3d288e577e2cfcdf065426543a573fe331427bcb414fc
3
+ metadata.gz: 584c043366fc46d0dd18625a51c1e0af82deeedd1e7a1b4ab7c2370930ec25b8
4
+ data.tar.gz: c89470cb71fc78bdb60dda1693885ccdd2fdb9b8d40e505b9ef52748345ac04e
5
5
  SHA512:
6
- metadata.gz: 6af442178978f4528406e0ce3d219157cebbd75a70ca2575dadbf03ae58a87ce71d9e1285127422172e536620fad132951d73cd3b173112563bce7b50a5761c6
7
- data.tar.gz: 56307ba25fe5b2d7d523ca9b3fba1908ec30443ce25547fcacc28361674f53bd9ef2ef6874957e4932cf66a62b3815e440a3c2f12ba069b42c00830bc67e096b
6
+ metadata.gz: 1664a08d8db3007c3fb3be9818e03d82a329d2413a48f92d642cc239848a7ee7ee9368564c71f0fad83652ae0fb62584698b15542c159f600c0e9542a6c23c33
7
+ data.tar.gz: 95aa576daabe9e60cbc2704b53fbcd306c17b17246f09a5cb64dcd0a9f49d8186d4245f10d0d95f28dcd51e6e0b965d014394eaa005f46a4c1d3e948f549b09d
@@ -6,6 +6,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [1.0.3] - 2019-07-30
10
+ ### Added
11
+ - Added String => `non_possessive`
12
+ - Added String => `possessive`
13
+ - Added String => `possessive?`
14
+
9
15
  ## [1.0.2] - 2019-07-21
10
16
  ### Added
11
17
  - Added Enumerable => `cluster_by`
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- lite-ruby (1.0.2)
4
+ lite-ruby (1.0.3)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -66,7 +66,7 @@ GEM
66
66
  rake (>= 0.8.7)
67
67
  thor (>= 0.19.0, < 2.0)
68
68
  rainbow (3.0.0)
69
- rake (12.3.2)
69
+ rake (12.3.3)
70
70
  rspec (3.8.0)
71
71
  rspec-core (~> 3.8.0)
72
72
  rspec-expectations (~> 3.8.0)
@@ -80,16 +80,16 @@ 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.72.0)
83
+ rubocop (0.73.0)
84
84
  jaro_winkler (~> 1.5.1)
85
85
  parallel (~> 1.10)
86
86
  parser (>= 2.6)
87
87
  rainbow (>= 2.2.2, < 4.0)
88
88
  ruby-progressbar (~> 1.7)
89
89
  unicode-display_width (>= 1.4.0, < 1.7)
90
- rubocop-performance (1.4.0)
90
+ rubocop-performance (1.4.1)
91
91
  rubocop (>= 0.71.0)
92
- rubocop-rspec (1.33.0)
92
+ rubocop-rspec (1.34.0)
93
93
  rubocop (>= 0.60.0)
94
94
  ruby-progressbar (1.10.1)
95
95
  ruby_parser (3.13.1)
@@ -290,6 +290,15 @@ Returns true if characters are mixedcase.
290
290
  'example'.mixedcase? #=> false
291
291
  ```
292
292
 
293
+ `non_possessive(!)`
294
+ ------
295
+ Returns the non-possession of a string.
296
+
297
+ ```ruby
298
+ "test's".non_possessive #=> 'test'
299
+ "tests'".non_possessive #=> 'tests'
300
+ ```
301
+
293
302
  `ordinal`
294
303
  ------
295
304
  Returns the suffix that should be added to a number to denote the position in an ordered sequence such as 1st, 2nd, 3rd, 4th.
@@ -338,6 +347,26 @@ Pollutes the space between every letter in a string, so it will be exempt from a
338
347
  'test'.pollute('-') #=> 't-e-s-t-'
339
348
  ```
340
349
 
350
+ `possessive(!)`
351
+ ------
352
+ Returns the possession of a string.
353
+
354
+ ```ruby
355
+ 'test'.possessive #=> "test's"
356
+ 'tests'.possessive #=> "tests'"
357
+ ```
358
+
359
+ `possessive?`
360
+ ------
361
+ Returns if a string is possessive.
362
+
363
+ ```ruby
364
+ "test's".possessive? #=> true
365
+ "tests'".possessive? #=> true
366
+ 'test'.possessive? #=> false
367
+ 'tests'.possessive? #=> false
368
+ ```
369
+
341
370
  `pop`
342
371
  ------
343
372
  Returns the last character of a string.
@@ -11,11 +11,9 @@ class OpenStruct
11
11
  {}
12
12
  end
13
13
 
14
- if hash
15
- hash.each do |key, val|
16
- @table[key.to_sym] = val
17
- new_ostruct_member(key)
18
- end
14
+ hash&.each do |key, val|
15
+ @table[key.to_sym] = val
16
+ new_ostruct_member(key)
19
17
  end
20
18
 
21
19
  yield self if block && block.arity == 1
@@ -324,6 +324,31 @@ class String
324
324
  self[-1]
325
325
  end
326
326
 
327
+ def non_possessive
328
+ dup.non_possessive!
329
+ end
330
+
331
+ def non_possessive!
332
+ return self unless possessive?
333
+
334
+ chomp!("'s") || chomp!("'") || self
335
+ end
336
+
337
+ def possessive
338
+ return self if possessive?
339
+
340
+ possession = end_with?('s') ? "'" : "'s"
341
+ "#{self}#{possession}"
342
+ end
343
+
344
+ def possessive!
345
+ replace(possessive)
346
+ end
347
+
348
+ def possessive?
349
+ %w['s s'].any? { |pos| end_with?(pos) }
350
+ end
351
+
327
352
  def push(string)
328
353
  replace(concat(string))
329
354
  end
@@ -514,7 +539,7 @@ class String
514
539
  def truncate_words(words_count, options = {})
515
540
  sep = options[:separator] || /\s+/
516
541
  sep = Regexp.escape(sep.to_s) unless sep.is_a(Regexp)
517
- return self unless self =~ /\A((?:.+?#{sep}){#{words_count - 1}}.+?)#{sep}.*/m
542
+ return self unless /\A((?:.+?#{sep}){#{words_count - 1}}.+?)#{sep}.*/m.match?(self)
518
543
 
519
544
  "#{::Regexp.last_match(1)}#{options[:omissio] || '...'}"
520
545
  end
@@ -3,7 +3,7 @@
3
3
  module Lite
4
4
  module Ruby
5
5
 
6
- VERSION ||= '1.0.2'
6
+ VERSION ||= '1.0.3'
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.2
4
+ version: 1.0.3
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-21 00:00:00.000000000 Z
11
+ date: 2019-07-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler