rb_core_extensions 0.1.2 → 0.1.3

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: ff651ca46ca4e51a477160b362fdd434c6fa95d248d27a5022b0ee8f0c9b5b41
4
- data.tar.gz: 819bafb17f44354587c741c2ede51e3bf7f002f7020bdb32a718d82016401519
3
+ metadata.gz: eaab7679a1e5cedcdfd17b5abaed34ac040d6d5f0bc7ab91e8e3d52695d78720
4
+ data.tar.gz: e61962df11083b76b1198b1762854142dd9e160d8e127fbdc6f11021d27f1d13
5
5
  SHA512:
6
- metadata.gz: e05845abd3afc84fcee0fd1ee16d05f2b9904b5e9abe082cf261bddc2681e3637122786a3ddb792a6ba08273313ea766b8b4defcdbcf627de1ba747b333d10d2
7
- data.tar.gz: 572c3a81cc8c4fe82b821220d3528c4497d4246b02061422ce7f1155af4427c70666db8b28f2a64a63e2f96a1523a3e57db8a46867e686ec0372a04444d57987
6
+ metadata.gz: 889d4bb5b68918c8feaf3bf3ac4cac823f78b2899af9a0f3a7afe5f9d63fbef3c357e1da85c31bf07e893172ccaf540d70f9594ec756b0c82361a7c504f17b43
7
+ data.tar.gz: 3712ca130c9031070b2ec4d01edea3f88e8e991db450e6c3d229e39eeab21df2f34363b9a7464d66ee88970752f2ecfca4352d0d9a645954640f610b7e3ebd17
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## [0.1.3](https://github.com/shivam091/core_extensions/compare/v0.1.2...v0.1.3) - 2023-07-07
2
+
3
+ ### What's new
4
+
5
+ - Added core extension methods `hierarchy`, `lineage`, and `leaf_subclasses` in `Class`
6
+ - Added extensions `to_i` and `to_b` in `TrueClass` and `FalseClass`
7
+ - Added `to_b` core ext. in `NilClass`
8
+
1
9
  ## [0.1.2](https://github.com/shivam091/core_extensions/compare/v0.1.1...v0.1.2) - 2023-07-06
2
10
 
3
11
  ### What's new
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rb_core_extensions (0.1.2)
4
+ rb_core_extensions (0.1.3)
5
5
  activesupport (~> 7.0)
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -47,7 +47,7 @@ require "core_extensions/date"
47
47
 
48
48
  ## Extensions Provided
49
49
 
50
- Below are the extension methods which are provided by `rb_core_extensions`. Please refer [documentation](https://shivam091.github.io/core_extensions) or rspec for examples of how to use these methods.
50
+ Below are the extension methods provided by `rb_core_extensions`. Please refer [documentation](https://shivam091.github.io/core_extensions) for examples of how to use these methods.
51
51
 
52
52
  ### [Array](https://shivam091.github.io/core_extensions/Array.html)
53
53
 
@@ -78,10 +78,23 @@ Below are the extension methods which are provided by `rb_core_extensions`. Plea
78
78
  #### ***core_extensions/hash/delete.rb***
79
79
  1. **[`#slice!`](https://shivam091.github.io/core_extensions/Hash.html#method-i-slice-21)** - Alters the hash by keeping only specified `keys` and returns it.
80
80
 
81
+ ### [TrueClass](https://shivam091.github.io/core_extensions/TrueClass.html)
82
+
83
+ #### ***core_extensions/true_class.rb***
84
+ 1. **[`#to_i`](https://shivam091.github.io/core_extensions/TrueClass.html#method-i-to_i)** - Returns `1` if invoked on `TrueClass` instance.
85
+ 2. **[`#to_b`](https://shivam091.github.io/core_extensions/TrueClass.html#method-i-to_b)** - Returns `true` if invoked on `TrueClass` instance.
86
+
87
+ ### [FalseClass](https://shivam091.github.io/core_extensions/FalseClass.html)
88
+
89
+ #### ***core_extensions/false_class.rb***
90
+ 1. **[`#to_i`](https://shivam091.github.io/core_extensions/FalseClass.html#method-i-to_i)** - Returns `0` if invoked on `FalseClass` instance.
91
+ 2. **[`#to_b`](https://shivam091.github.io/core_extensions/FalseClass.html#method-i-to_b)** - Returns `false` if invoked on `FalseClass` instance.
92
+
81
93
  ### [NilClass](https://shivam091.github.io/core_extensions/NilClass.html)
82
94
 
83
- ### ***core_extensions/nil_class***
84
- 1. **[`#blank?`](https://shivam091.github.io/core_extensions/NilClass.html#method-i-blank-3F)** - Returns `true` when invoked on `nil`.
95
+ #### ***core_extensions/nil_class.rb***
96
+ 1. **[`#blank?`](https://shivam091.github.io/core_extensions/NilClass.html#method-i-blank-3F)** - Returns `true` if invoked on `NilClass` instance.
97
+ 2. **[`#to_b`](https://shivam091.github.io/core_extensions/NilClass.html#method-i-to_b)** - Returns `false` if invoked on `NilClass` instance.
85
98
 
86
99
  ### [Object](https://shivam091.github.io/core_extensions/Object.html)
87
100
 
@@ -95,6 +108,13 @@ Below are the extension methods which are provided by `rb_core_extensions`. Plea
95
108
  #### ***core_extensions/module.rb***
96
109
  1. **[`#namespaces`](https://shivam091.github.io/core_extensions/Module.html#method-i-namespaces)** - Returns an `Array` with the namespaces to the current `Module`.
97
110
 
111
+ ### [Class](https://shivam091.github.io/core_extensions/Class.html)
112
+
113
+ #### ***core_extensions/class.rb***
114
+ 1. **[`#hierarchy`](https://shivam091.github.io/core_extensions/Class.html#method-i-hierarchy)** - Returns a tree-like `Hash` structure of all descendants.
115
+ 2. **[`#lineage`](https://shivam091.github.io/core_extensions/Class.html#method-i-lineage)** - Returns an `Array` of all superclasses.
116
+ 3. **[`#leaf_subclasses`](https://shivam091.github.io/core_extensions/Class.html#method-i-leaf_subclasses)** - Returns an `Array` of all descendants which have no subclasses.
117
+
98
118
  ## Contributing
99
119
 
100
120
  1. Fork it
@@ -4,7 +4,10 @@
4
4
 
5
5
  require "core_extensions/array"
6
6
  require "core_extensions/hash"
7
+ require "core_extensions/true_class"
8
+ require "core_extensions/false_class"
7
9
  require "core_extensions/nil_class"
8
10
 
9
- require "core_extensions/object"
11
+ require "core_extensions/class"
10
12
  require "core_extensions/module"
13
+ require "core_extensions/object"
@@ -0,0 +1,40 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # -*- frozen_string_literal: true -*-
3
+ # -*- warn_indent: true -*-
4
+
5
+ require "active_support/core_ext/class/subclasses"
6
+
7
+ class Class
8
+ # Returns a tree-like +Hash+ structure of all descendants.
9
+ #
10
+ # ==== Examples
11
+ #
12
+ # require 'socket'
13
+ # IO.hierarchy
14
+ # #=> {BasicSocket=>{UNIXSocket=>{UNIXServer=>{}}, IPSocket=>{UDPSocket=>{}, TCPSocket=>{TCPServer=>{}}}, Socket=>{}}, File=>{}}
15
+ def hierarchy
16
+ subclasses.each_with_object({}) { |k, h| h[k] = k.hierarchy }
17
+ end
18
+
19
+ # Returns an +Array+ of all superclasses.
20
+ #
21
+ # ==== Examples
22
+ #
23
+ # require 'socket'
24
+ # TCPServer.lineage
25
+ # #=> [TCPSocket, IPSocket, BasicSocket, IO, Object, BasicObject]
26
+ def lineage
27
+ superclass.nil? ? [] : superclass.lineage.unshift(superclass)
28
+ end
29
+
30
+ # Returns an +Array+ of all descendants which have no subclasses.
31
+ #
32
+ # ==== Examples
33
+ #
34
+ # require 'socket'
35
+ # BasicSocket.leaf_subclasses
36
+ # #=> [Socket, UNIXServer, UDPSocket, TCPServer]
37
+ def leaf_subclasses
38
+ descendants.select { |d| d.subclasses.empty? }
39
+ end
40
+ end
@@ -0,0 +1,23 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # -*- frozen_string_literal: true -*-
3
+ # -*- warn_indent: true -*-
4
+
5
+ class FalseClass
6
+ # Returns +0+ if invoked on +FalseClass+ instance.
7
+ #
8
+ # ==== Examples
9
+ #
10
+ # false.to_i #=> 0
11
+ def to_i
12
+ 0
13
+ end
14
+
15
+ # Returns +false+ if invoked on +FalseClass+ instance.
16
+ #
17
+ # ==== Examples
18
+ #
19
+ # false.to_b #=> false
20
+ def to_b
21
+ false
22
+ end
23
+ end
@@ -3,7 +3,7 @@
3
3
  # -*- warn_indent: true -*-
4
4
 
5
5
  class NilClass
6
- # Returns +true+ when invoked on `nil`.
6
+ # Returns +true+ if invoked on `NilClass` instance.
7
7
  #
8
8
  # ==== Examples
9
9
  #
@@ -11,4 +11,13 @@ class NilClass
11
11
  def blank?
12
12
  true
13
13
  end
14
+
15
+ # Returns +false+ if invoked on +NilClass+ instance.
16
+ #
17
+ # ==== Examples
18
+ #
19
+ # nil.to_b #=> false
20
+ def to_b
21
+ false
22
+ end
14
23
  end
@@ -0,0 +1,23 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # -*- frozen_string_literal: true -*-
3
+ # -*- warn_indent: true -*-
4
+
5
+ class TrueClass
6
+ # Returns +1+ if invoked on +TrueClass+ instance.
7
+ #
8
+ # ==== Examples
9
+ #
10
+ # true.to_i #=> 1
11
+ def to_i
12
+ 1
13
+ end
14
+
15
+ # Returns +true+ if invoked on +TrueClass+ instance.
16
+ #
17
+ # ==== Examples
18
+ #
19
+ # true.to_b #=> true
20
+ def to_b
21
+ true
22
+ end
23
+ end
@@ -3,5 +3,5 @@
3
3
  # -*- warn_indent: true -*-
4
4
 
5
5
  module CoreExtensions #:nodoc:
6
- VERSION = "0.1.2"
6
+ VERSION = "0.1.3"
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rb_core_extensions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Harshal LADHE
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-07-06 00:00:00.000000000 Z
11
+ date: 2023-07-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -70,6 +70,8 @@ files:
70
70
  - lib/core_extensions/array/duplicates.rb
71
71
  - lib/core_extensions/array/inclusion.rb
72
72
  - lib/core_extensions/array/math.rb
73
+ - lib/core_extensions/class.rb
74
+ - lib/core_extensions/false_class.rb
73
75
  - lib/core_extensions/hash.rb
74
76
  - lib/core_extensions/hash/access.rb
75
77
  - lib/core_extensions/hash/delete.rb
@@ -77,6 +79,7 @@ files:
77
79
  - lib/core_extensions/module.rb
78
80
  - lib/core_extensions/nil_class.rb
79
81
  - lib/core_extensions/object.rb
82
+ - lib/core_extensions/true_class.rb
80
83
  - lib/core_extensions/version.rb
81
84
  - rb_core_extensions.gemspec
82
85
  homepage: https://github.com/shivam091/core_extensions