rb_core_extensions 0.1.0 → 0.1.2

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: a6e1b20ef1ca0581de4193e3035e1d4e060f3714e8b81912cbc6d3d2a240a35b
4
- data.tar.gz: a590f507ea31525383242987cca723c208617baea3f66c76967680044d154e3b
3
+ metadata.gz: ff651ca46ca4e51a477160b362fdd434c6fa95d248d27a5022b0ee8f0c9b5b41
4
+ data.tar.gz: 819bafb17f44354587c741c2ede51e3bf7f002f7020bdb32a718d82016401519
5
5
  SHA512:
6
- metadata.gz: 4d229736ef48c958c4d844b11d1d186f8832248e759875bc3322b268ca05f98905df2455049c7416a8752364f93fd79991e9c50bf5f785d93f79ec380b011872
7
- data.tar.gz: 3bcd013b138d899c6566552d564acc61331ac4db63a255d6f1bbe3917e46a4276cb4802664434489b3ccd5cd064556f1d296ca4413835144687cf341b7830d02
6
+ metadata.gz: e05845abd3afc84fcee0fd1ee16d05f2b9904b5e9abe082cf261bddc2681e3637122786a3ddb792a6ba08273313ea766b8b4defcdbcf627de1ba747b333d10d2
7
+ data.tar.gz: 572c3a81cc8c4fe82b821220d3528c4497d4246b02061422ce7f1155af4427c70666db8b28f2a64a63e2f96a1523a3e57db8a46867e686ec0372a04444d57987
@@ -27,4 +27,4 @@ jobs:
27
27
  - name: Run test cases
28
28
  run: bundle exec rake
29
29
  - name: Publish code coverage
30
- uses: paambaati/codeclimate-action@v4.0.0
30
+ uses: paambaati/codeclimate-action@v5.0.0
data/CHANGELOG.md CHANGED
@@ -1,3 +1,22 @@
1
+ ## [0.1.2](https://github.com/shivam091/core_extensions/compare/v0.1.1...v0.1.2) - 2023-07-06
2
+
3
+ ### What's new
4
+
5
+ - Added core extension methods `keys?`, `slice!`, and `keys_at` in `Hash`
6
+ - Added core extension method `namespaces` in `Module`
7
+ - Added core extension method `blank?` in `NilClass`
8
+ - Added core extension methods `is_one_of?`, `deep_send`, and `in_namespace?` in `Object`
9
+
10
+ ### What's changed
11
+
12
+ - Bumped version of `paambaati/codeclimate-action` workflow action to `5.0.0`
13
+
14
+ ## [0.1.1](https://github.com/shivam091/core_extensions/compare/v0.1.0...v0.1.1) - 2023-07-05
15
+
16
+ ### What's new
17
+
18
+ - Added core extension methods `take!`, `round`, `duplicates`, `include_all?`, `include_any?`, `include_none?`, `includes_index?`, `mean`, `stddev`, and `variance` in `Array`
19
+
1
20
  ## [0.1.0] - 2023-07-05
2
21
 
3
22
  - Initial release
data/Gemfile CHANGED
@@ -1,4 +1,6 @@
1
- # frozen_string_literal: true
1
+ # -*- encoding: utf-8 -*-
2
+ # -*- frozen_string_literal: true -*-
3
+ # -*- warn_indent: true -*-
2
4
 
3
5
  source "https://rubygems.org"
4
6
 
data/Gemfile.lock CHANGED
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rb_core_extensions (0.1.0)
5
- activesupport
4
+ rb_core_extensions (0.1.2)
5
+ activesupport (~> 7.0)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
@@ -48,7 +48,7 @@ DEPENDENCIES
48
48
  rake (~> 13.0)
49
49
  rb_core_extensions!
50
50
  rspec (~> 3.0)
51
- simplecov (>= 0.21.2)
51
+ simplecov (~> 0.21, >= 0.21.2)
52
52
 
53
53
  BUNDLED WITH
54
54
  2.4.10
data/README.md CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  `rb_core_extensions` is a set of core extensions beyond those provided by `Ruby` and `ActiveSupport`.
4
4
 
5
+ [![Ruby](https://github.com/shivam091/core_extensions/actions/workflows/main.yml/badge.svg)](https://github.com/shivam091/rb_core_extensions/actions/workflows/main.yml)
6
+ [![Gem Version](https://badge.fury.io/rb/rb_core_extensions.svg)](https://badge.fury.io/rb/rb_core_extensions)
7
+ [![Gem Downloads](https://img.shields.io/gem/dt/rb_core_extensions.svg)](http://rubygems.org/gems/rb_core_extensions)
8
+ [![Test Coverage](https://api.codeclimate.com/v1/badges/592b82a5336ee551a8f1/test_coverage)](https://codeclimate.com/github/shivam091/core_extensions/test_coverage)
9
+ [![Maintainability](https://api.codeclimate.com/v1/badges/592b82a5336ee551a8f1/maintainability)](https://codeclimate.com/github/shivam091/core_extensions/maintainability)
10
+ [![License](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/shivam091/core_extensions/blob/main/LICENSE.txt)
11
+
5
12
  ## Minimum Requirements
6
13
 
7
14
  * Ruby 3.2.2+ (https://www.ruby-lang.org/en/downloads/branches/)
@@ -22,6 +29,72 @@ Or otherwise simply install it yourself as:
22
29
 
23
30
  `$ gem install rb_core_extensions`
24
31
 
32
+ ### Usage
33
+
34
+ Loading all core extensions at once:
35
+
36
+ ```ruby
37
+ require "core_extensions/all"
38
+ ```
39
+
40
+ Cherry-picking only what you want:
41
+
42
+ ```ruby
43
+ require "core_extensions/array"
44
+ require "core_extensions/array/math"
45
+ require "core_extensions/date"
46
+ ```
47
+
48
+ ## Extensions Provided
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.
51
+
52
+ ### [Array](https://shivam091.github.io/core_extensions/Array.html)
53
+
54
+ #### ***core_extensions/array/delete.rb***
55
+ 1. **[`#take!`](https://shivam091.github.io/core_extensions/Array.html#method-i-take-21)** - Alters the array by removing first `n` elements.
56
+
57
+ #### ***core_extensions/array/math.rb***
58
+ 1. **[`round`](https://shivam091.github.io/core_extensions/Array.html#method-i-round)** - Rounds each element of the numeric array up to specified `precision`.
59
+ 2. **[`mean`](https://shivam091.github.io/core_extensions/Array.html#method-i-mean)** - Returns the mean of the array of `Numeric`.
60
+ 3. **[`variance`](https://shivam091.github.io/core_extensions/Array.html#method-i-variance)** - Returns the variance of the array of `Numeric`.
61
+ 4. **[`stddev`](https://shivam091.github.io/core_extensions/Array.html#method-i-stddev)** - Returns the standard deviation of the array of `Numeric`.
62
+
63
+ #### ***core_extensions/array/duplicates.rb***
64
+ 1. **[`duplicates`](https://shivam091.github.io/core_extensions/Array.html#method-i-duplicates)** - Returns an array of the duplicate elements.
65
+
66
+ #### ***core_extensions/array/inclusion.rb***
67
+ 1. **[`include_any?`](https://shivam091.github.io/core_extensions/Array.html#method-i-include_any-3F)** - Returns whether the array contains any of the `elements`.
68
+ 2. **[`include_none?`](https://shivam091.github.io/core_extensions/Array.html#method-i-include_none-3F)** - Returns whether the array contains none of the `elements`.
69
+ 3. **[`include_all?`](https://shivam091.github.io/core_extensions/Array.html#method-i-include_all-3F)** - Returns whether the array contains all of the `elements`.
70
+ 4. **[`includes_index?`](https://shivam091.github.io/core_extensions/Array.html#method-i-includes_index-3F)** - Returns whether the array has a value at the specified `index`.
71
+
72
+ ### [Hash](https://shivam091.github.io/core_extensions/Hash.html)
73
+
74
+ #### ***core_extensions/hash/inclusion.rb***
75
+ 1. **[`#keys?`](https://shivam091.github.io/core_extensions/Hash.html#method-i-keys-3F)** - Returns whether the hash contains all of the specified `keys`.
76
+ #### ***core_extensions/hash/access.rb***
77
+ 1. **[`#keys_at`](https://shivam091.github.io/core_extensions/Hash.html#method-i-keys_at)** - Returns the array of keys of an occurrence of given `values`.
78
+ #### ***core_extensions/hash/delete.rb***
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
+
81
+ ### [NilClass](https://shivam091.github.io/core_extensions/NilClass.html)
82
+
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`.
85
+
86
+ ### [Object](https://shivam091.github.io/core_extensions/Object.html)
87
+
88
+ #### ***core_extensions/object.rb***
89
+ 1. **[`#is_one_of?`](https://shivam091.github.io/core_extensions/Object.html#method-i-is_one_of-3F)** - Returns `true` if the receiver object is an instance of at least one of the classes specified by `args`.
90
+ 2. **[`#deep_send`](https://shivam091.github.io/core_extensions/Object.html#method-i-deep_send)** - Invokes the specified methods continuously, unless encountering a `nil` value.
91
+ 3. **[`#in_namespace?`](https://shivam091.github.io/core_extensions/Object.html#method-i-in_namespace-3F)** - Returns whether or not the object is in the given namespace.
92
+
93
+ ### [Module](https://shivam091.github.io/core_extensions/Module.html)
94
+
95
+ #### ***core_extensions/module.rb***
96
+ 1. **[`#namespaces`](https://shivam091.github.io/core_extensions/Module.html#method-i-namespaces)** - Returns an `Array` with the namespaces to the current `Module`.
97
+
25
98
  ## Contributing
26
99
 
27
100
  1. Fork it
data/Rakefile CHANGED
@@ -1,4 +1,6 @@
1
- # frozen_string_literal: true
1
+ # -*- encoding: utf-8 -*-
2
+ # -*- frozen_string_literal: true -*-
3
+ # -*- warn_indent: true -*-
2
4
 
3
5
  require "bundler/gem_tasks"
4
6
  require "rspec/core/rake_task"
data/bin/console CHANGED
@@ -4,7 +4,7 @@
4
4
  # -*- warn_indent: true -*-
5
5
 
6
6
  require "bundler/setup"
7
- require "core_extensions"
7
+ require "core_extensions/all"
8
8
 
9
9
  # You can add fixtures and/or initialization code here to make experimenting
10
10
  # with your gem easier. You can also use a different console, if you like.
@@ -0,0 +1,10 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # -*- frozen_string_literal: true -*-
3
+ # -*- warn_indent: true -*-
4
+
5
+ require "core_extensions/array"
6
+ require "core_extensions/hash"
7
+ require "core_extensions/nil_class"
8
+
9
+ require "core_extensions/object"
10
+ require "core_extensions/module"
@@ -0,0 +1,22 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # -*- frozen_string_literal: true -*-
3
+ # -*- warn_indent: true -*-
4
+
5
+ class Array
6
+ # Alters the array by removing first +n+ elements.
7
+ #
8
+ # If a negative number is given, raises an +ArgumentError+.
9
+ #
10
+ # ==== Attributes
11
+ #
12
+ # * +n+ - Number of elements to take from the array.
13
+ #
14
+ # ==== Examples
15
+ #
16
+ # [].take!(3) # => []
17
+ # [1, 2, 3, 4, 5].take!(3) #=> [1, 2, 3]
18
+ # [1, 2, 3, 4, 5].take!(6) #=> [1, 2, 3, 4, 5]
19
+ def take!(n)
20
+ replace(take(n))
21
+ end
22
+ end
@@ -0,0 +1,15 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # -*- frozen_string_literal: true -*-
3
+ # -*- warn_indent: true -*-
4
+
5
+ class Array
6
+ # Returns an array of the duplicate elements.
7
+ #
8
+ # ==== Examples
9
+ #
10
+ # [1, 2, 3, 2, 4, 1, 5].duplicates #=> [1, 2]
11
+ # [1, 2, 3, 4, 2, 4].duplicates #=> [2, 4]
12
+ def duplicates
13
+ self.select { |element| self.count(element) > 1 }.uniq
14
+ end
15
+ end
@@ -0,0 +1,67 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # -*- frozen_string_literal: true -*-
3
+ # -*- warn_indent: true -*-
4
+
5
+ class Array
6
+ # Returns whether the array contains any of the +elements+.
7
+ #
8
+ # ==== Arguments
9
+ #
10
+ # * +elements+ - +elements+ that needs to be checked in the array.
11
+ #
12
+ # ==== Examples
13
+ #
14
+ # [1, 2, 3].include_any?(1, 2) #=> true
15
+ # [1, 2, 3].include_any?(1, 4) #=> true
16
+ # [1, 2, 3].include_any?(4, 5) #=> false
17
+ def include_any?(*elements)
18
+ !(self & elements).empty?
19
+ end
20
+
21
+ # Returns whether the array contains none of the +elements+.
22
+ #
23
+ # ==== Arguments
24
+ #
25
+ # * +elements+ - +elements+ that needs to be checked in the array.
26
+ #
27
+ # ==== Examples
28
+ #
29
+ # [1, 2, 3].include_none?(1, 2) #=> false
30
+ # [1, 2, 3].include_none?(1, 4) #=> false
31
+ # [1, 2, 3].include_none?(4, 5) #=> true
32
+ def include_none?(*elements)
33
+ (self & elements).empty?
34
+ end
35
+
36
+ # Returns whether the array contains all of the +elements+.
37
+ #
38
+ # ==== Arguments
39
+ #
40
+ # * +elements+ - +elements+ that needs to be checked in the array.
41
+ #
42
+ # ==== Examples
43
+ #
44
+ # [1, 2, 3].include_all?(1, 2) #=> true
45
+ # [1, 2, 3].include_all?(1, 4) #=> false
46
+ # [1, 2, 3].include_all?(4, 5) #=> false
47
+ def include_all?(*elements)
48
+ (elements - self).empty?
49
+ end
50
+
51
+ # Returns whether the array has a value at the specified +index+.
52
+ #
53
+ # ==== Arguments
54
+ #
55
+ # * +index+ - +index+ that needs to be checked in the array.
56
+ #
57
+ # ==== Examples
58
+ #
59
+ # [1, 2, 3].includes_index?(-4) #=> false
60
+ # [1, 2, 3].includes_index?(-3) #=> true
61
+ # [1, 2, 3].includes_index?(1) #=> true
62
+ # [1, 2, 3].includes_index?(2) #=> true
63
+ # [1, 2, 3].includes_index?(3) #=> false
64
+ def includes_index?(index)
65
+ (-self.length...self.length).cover?(index)
66
+ end
67
+ end
@@ -0,0 +1,55 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # -*- frozen_string_literal: true -*-
3
+ # -*- warn_indent: true -*-
4
+
5
+ class Array
6
+ # Rounds each element of the array up to specified +precision+.
7
+ #
8
+ # If +precision+ is +zero+, array elements will be rounded to integers.
9
+ #
10
+ # ==== Attributes
11
+ #
12
+ # * +precision+ - Returns float rounded to the nearest value with a precision of +precision+.
13
+ #
14
+ # ==== Examples
15
+ #
16
+ # [1.342, 2.876, 3.546, 5.623, 5.245].round #=> [1.34, 2.88, 3.55, 5.62, 5.25]
17
+ # [1.342, 2.876, 3.546, 5.623, 5.245].round(1) #=> [1.3, 2.9, 3.5, 5.6, 5.2]
18
+ # [1.342, 2.876, 3.546, 5.623, 5.245].round(0) #=> [1, 3, 4, 6, 5]
19
+ def round(precision = 2)
20
+ map { |element| element.round(precision) }
21
+ end
22
+
23
+ # Returns the mean of the array of +Numeric+.
24
+ #
25
+ # ==== Examples
26
+ #
27
+ # [1, 2, 3, 4, 5].mean #=> 3.0
28
+ # [1.0, 2.0, 3.0].mean #=> 2.0
29
+ def mean
30
+ sum.to_f / size
31
+ end
32
+ alias_method :average, :mean
33
+
34
+ # Returns the variance of the array of +Numeric+.
35
+ #
36
+ # ==== Examples
37
+ #
38
+ # [1, 2, 3, 4, 5].variance #=> 2.0
39
+ # [1.0, 2.0, 3.0].variance #=> 0.6666666666666666
40
+ def variance
41
+ return 0 if empty?
42
+
43
+ map { |element| (element - mean) ** 2 }.sum / length
44
+ end
45
+
46
+ # Returns the standard deviation of the array of +Numeric+.
47
+ #
48
+ # ==== Examples
49
+ #
50
+ # [1, 2, 3, 4, 5].stddev #=> 1.4142135623730951
51
+ # [1.0, 2.0, 3.0].stddev #=> 0.816496580927726
52
+ def stddev
53
+ Math.sqrt(variance)
54
+ end
55
+ end
@@ -0,0 +1,8 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # -*- frozen_string_literal: true -*-
3
+ # -*- warn_indent: true -*-
4
+
5
+ require "core_extensions/array/delete"
6
+ require "core_extensions/array/duplicates"
7
+ require "core_extensions/array/inclusion"
8
+ require "core_extensions/array/math"
@@ -0,0 +1,21 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # -*- frozen_string_literal: true -*-
3
+ # -*- warn_indent: true -*-
4
+
5
+ class Hash
6
+ # Returns the array of keys of an occurrence of given +values+.
7
+ # If the value is not found, returns empty array.
8
+ #
9
+ # ==== Arguments
10
+ #
11
+ # * +values+ - +values+ for which keys are to be retrieved.
12
+ #
13
+ # ==== Examples
14
+ #
15
+ # {a: 1, b: 2}.keys_at(1, 2) #=> [:a, :b]
16
+ # {a: 1, b: 2}.keys_at(1, 3) #=> [:a]
17
+ # {a: 1, b: 2}.keys_at(3) #=> []
18
+ def keys_at(*values)
19
+ select { |_, value| values.include?(value) }.keys
20
+ end
21
+ end
@@ -0,0 +1,20 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # -*- frozen_string_literal: true -*-
3
+ # -*- warn_indent: true -*-
4
+
5
+ class Hash
6
+ # Alters the hash by keeping only specified `keys` and returns it.
7
+ # If the key is not present, returns empty `Hash`.
8
+ #
9
+ # ==== Arguments
10
+ #
11
+ # * +keys+ - +keys+ to be kept in the original `Hash`.
12
+ #
13
+ # ==== Examples
14
+ #
15
+ # {name: 'John', age: 30, occupation: 'Engineer', gender: 'Male'}.slice!(:name, :age) #=> {name: 'John', age: 30}
16
+ # {name: 'John', age: 30, occupation: 'Engineer', gender: 'Male'}.slice!(:address) #=> {}
17
+ def slice!(*keys)
18
+ keep_if { |key, _| keys.include?(key) }
19
+ end
20
+ end
@@ -0,0 +1,21 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # -*- frozen_string_literal: true -*-
3
+ # -*- warn_indent: true -*-
4
+
5
+ class Hash
6
+ # Returns whether the hash contains all of the specified +keys+.
7
+ # This method is similar to Hash#key?, but it accepts several keys.
8
+ #
9
+ # ==== Arguments
10
+ #
11
+ # * +keys+ - +keys+ that needs to be checked in the hash.
12
+ #
13
+ # ==== Examples
14
+ #
15
+ # {a: 1, b: 2}.keys?(:a, :b) #=> true
16
+ # {a: 1, b: 2}.keys?(:a, :c) #=> false
17
+ def keys?(*keys)
18
+ keys.all? { |key| self.key?(key) }
19
+ end
20
+ alias_method :has_keys?, :keys?
21
+ end
@@ -0,0 +1,7 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # -*- frozen_string_literal: true -*-
3
+ # -*- warn_indent: true -*-
4
+
5
+ require "core_extensions/hash/access"
6
+ require "core_extensions/hash/delete"
7
+ require "core_extensions/hash/inclusion"
@@ -0,0 +1,14 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # -*- frozen_string_literal: true -*-
3
+ # -*- warn_indent: true -*-
4
+
5
+ class Module
6
+ # Returns an +Array+ with the namespaces to the current Module.
7
+ #
8
+ # ==== Examples
9
+ #
10
+ # Aaa::Bbb::Ccc::Ddd.namespaces #=> ["Aaa", "Bbb", "Ccc", "Ddd"]
11
+ def namespaces
12
+ name.to_s.split("::")
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # -*- frozen_string_literal: true -*-
3
+ # -*- warn_indent: true -*-
4
+
5
+ class NilClass
6
+ # Returns +true+ when invoked on `nil`.
7
+ #
8
+ # ==== Examples
9
+ #
10
+ # nil.blank? #=> true
11
+ def blank?
12
+ true
13
+ end
14
+ end
@@ -0,0 +1,64 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # -*- frozen_string_literal: true -*-
3
+ # -*- warn_indent: true -*-
4
+
5
+ class Object
6
+ # Returns +true+ if the receiver object is an instance of at least one of the classes specified by +args+.
7
+ # This method is similar to {Object#is_a?}[https://www.rubydoc.info/stdlib/core/Object#is_a%3F-instance_method], but it accepts multiple arguments.
8
+ #
9
+ # ==== Arguments
10
+ #
11
+ # * +args+ - The classes to check against. One or more classes can be passed. Each argument represents a class that the object will be checked against.
12
+ #
13
+ # ==== Examples
14
+ #
15
+ # 1.is_one_of?(Numeric, TrueClass) #=> true
16
+ # true.is_one_of?(Numeric, TrueClass) #=> true
17
+ # false.is_one_of?(Numeric, TrueClass) #=> false
18
+ #
19
+ # ==== Returns
20
+ # (Boolean)
21
+ def is_one_of?(*args)
22
+ args.any? { |arg| is_a?(arg) }
23
+ end
24
+
25
+ # Invokes the specified methods continuously, unless encountering a +nil+ value.
26
+ #
27
+ # ==== Examples
28
+ #
29
+ # 10.deep_send("to_s.length") # => 2
30
+ # 10.deep_send("to_s", "length") # => 2
31
+ # 10.deep_send(:to_s, :length) # => 2
32
+ # 10.deep_send(["to_s", "length"]) # => 2
33
+ # [].deep_send("first.length") # => nil
34
+ def deep_send(*args)
35
+ args = args.first.dup if args.length == 1 && args.first.kind_of?(Array)
36
+ args = args.shift.to_s.strip.split('.') + args
37
+
38
+ arg = args.shift
39
+ raise ArgumentError if arg.nil?
40
+
41
+ result = send(arg)
42
+ return nil if result.nil?
43
+ return result if args.empty?
44
+
45
+ result.deep_send(args)
46
+ end
47
+
48
+ # Returns whether or not the object is in the given namespace.
49
+ #
50
+ # ==== Arguments
51
+ #
52
+ # * +val+ - The object to be checked in the namespace.
53
+ #
54
+ # ==== Examples
55
+ #
56
+ # Aaa::Bbb::Ccc::Ddd.in_namespace?(Aaa::Bbb) #=> true
57
+ # Aaa::Bbb::Ccc::Ddd.new.in_namespace?(Aaa::Bbb) #=> true
58
+ # Aaa::Bbb::Ccc::Eee.in_namespace?("Aaa::Bbb") #=> true
59
+ # Aaa::Bbb::Ccc::Eee.in_namespace?(Aaa::Bbb::Ccc::Ddd) #=> false
60
+ def in_namespace?(val)
61
+ namespaces = val.to_s.split("::")
62
+ namespaces == (kind_of?(Module) ? namespaces : self.class.namespaces)[0, namespaces.length]
63
+ end
64
+ end
@@ -2,6 +2,6 @@
2
2
  # -*- frozen_string_literal: true -*-
3
3
  # -*- warn_indent: true -*-
4
4
 
5
- module CoreExtensions
6
- VERSION = "0.1.0"
5
+ module CoreExtensions #:nodoc:
6
+ VERSION = "0.1.2"
7
7
  end
@@ -1,4 +1,6 @@
1
- # frozen_string_literal: true
1
+ # -*- encoding: utf-8 -*-
2
+ # -*- frozen_string_literal: true -*-
3
+ # -*- warn_indent: true -*-
2
4
 
3
5
  require_relative "lib/core_extensions/version"
4
6
 
@@ -31,7 +33,7 @@ Gem::Specification.new do |spec|
31
33
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
32
34
  spec.require_paths = ["lib"]
33
35
 
34
- spec.add_runtime_dependency "activesupport"
36
+ spec.add_runtime_dependency "activesupport", "~> 7.0"
35
37
 
36
- spec.add_development_dependency "simplecov", ">= 0.21.2"
38
+ spec.add_development_dependency "simplecov", "~> 0.21", ">= 0.21.2"
37
39
  end
metadata CHANGED
@@ -1,33 +1,36 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rb_core_extensions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
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-05 00:00:00.000000000 Z
11
+ date: 2023-07-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '7.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '7.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: simplecov
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.21'
31
34
  - - ">="
32
35
  - !ruby/object:Gem::Version
33
36
  version: 0.21.2
@@ -35,6 +38,9 @@ dependencies:
35
38
  prerelease: false
36
39
  version_requirements: !ruby/object:Gem::Requirement
37
40
  requirements:
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '0.21'
38
44
  - - ">="
39
45
  - !ruby/object:Gem::Version
40
46
  version: 0.21.2
@@ -58,6 +64,19 @@ files:
58
64
  - bin/console
59
65
  - bin/setup
60
66
  - lib/core_extensions.rb
67
+ - lib/core_extensions/all.rb
68
+ - lib/core_extensions/array.rb
69
+ - lib/core_extensions/array/delete.rb
70
+ - lib/core_extensions/array/duplicates.rb
71
+ - lib/core_extensions/array/inclusion.rb
72
+ - lib/core_extensions/array/math.rb
73
+ - lib/core_extensions/hash.rb
74
+ - lib/core_extensions/hash/access.rb
75
+ - lib/core_extensions/hash/delete.rb
76
+ - lib/core_extensions/hash/inclusion.rb
77
+ - lib/core_extensions/module.rb
78
+ - lib/core_extensions/nil_class.rb
79
+ - lib/core_extensions/object.rb
61
80
  - lib/core_extensions/version.rb
62
81
  - rb_core_extensions.gemspec
63
82
  homepage: https://github.com/shivam091/core_extensions