simple_ext 0.1.1 → 0.1.2

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: cf6ae6ea43d968052f7497699c79073dbce1b9c1dff9646bd40b05176daf17ca
4
- data.tar.gz: 779f743a29f86ed1d2ea8b0c779c7f9875efc3fc88ab1497074a65d13eb9c0d8
3
+ metadata.gz: 941e17d10ecabc60c70b538a655fc9fca58ce360e677ccff5beb2f212faa2b44
4
+ data.tar.gz: 2cb3d6c6cf0492341a3a5d5d2e6526f68e5bd940b1b13f7ce7c0ba0dd430ca20
5
5
  SHA512:
6
- metadata.gz: e7b212f5eb4cf9701be6aa5701bcf1c953e1c665fcae644f6f6bbf629a51ccc862fbc3ed9231be337e35feec5e2d4f208072465d917c890c41cf292c08d4250f
7
- data.tar.gz: 4e3c0499391f114534b282f0db21b28858facd3821f16dde161e369231024d4096784bacf3b014d5c0a3baa1774523033116f26a82a1a54ecdd4b097a73cae07
6
+ metadata.gz: f5c68a0c8455c85ecdc883d96275ee8e9d56ca816b5363dc88a8b98a973814b1c23a817d93de41a080b9b584040e28579a20e7eb7e75b843f2b21b5582380472
7
+ data.tar.gz: 320998a91180545b68366a973d7dd38b2e8dbc6ebc7bbd5563f2b4c80f7e6b823b819c4d66df8c2f177920f060848f03dd385eebde43535b4fe36e461e56e326
@@ -1,3 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative 'array/access.rb'
4
+ require_relative 'array/values.rb'
@@ -0,0 +1,75 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Array
4
+
5
+ ##
6
+ # Check if any element is nil in array
7
+ # [1, 2, ' ', 4].any_nil? => false
8
+ # [1, nil, 2, 4].any_nil? => true
9
+ def any_nil?
10
+ any?(&:nil?)
11
+ end
12
+
13
+ ##
14
+ # Check if any element is empty in array
15
+ # [1, 2, ' ', 4].any_empty? => false
16
+ # [1, nil, 2, 4].any_empty? => false
17
+ # [1, '', 3, 4].any_empty? => true
18
+ def any_empty?
19
+ any? { |e| e.respond_to?(:empty?) && e.empty? }
20
+ end
21
+
22
+ ##
23
+ # Check if any element is blank in array
24
+ # [1, 2, ' ', 4].any_blank? => true
25
+ # [1, nil, 2, 4].any_blank? => true
26
+ # [1, '', 3, 4].any_blank? => true
27
+ # [1, 2, 3, 4].any_blank? => false
28
+ def any_blank?
29
+ any?(&:blank?)
30
+ end
31
+
32
+ ##
33
+ # Check if array contains a hash with given arg
34
+ # arg: should be an hash
35
+ #
36
+ # arr = [{a: 1, b: 2, c: 3}, {a: 4, b: 5, c: 6}]
37
+ # arr.include_hash_with?({a: 4}) => true
38
+ # arr.include_hash_with?({"a" => 4, "b" => 5}) => true
39
+ # arr.include_hash_with?({a: 4, b: 6}) => false
40
+ def include_hash_with?(arg)
41
+ !find_hash_with(arg).blank?
42
+ end
43
+
44
+ ##
45
+ # Check if array contains a string with given substring
46
+ #
47
+ # arr = ['abc', 'def', 'pqr', 'xyz']
48
+ # arr.include_string_with?('pq') => true
49
+ # arr.include_string_with?('df') => false
50
+ def include_string_with?(arg)
51
+ any? { |e| e.include?(arg) }
52
+ end
53
+
54
+ ##
55
+ # Find a hash from array which matches given arg
56
+ # arg: should be hash
57
+ #
58
+ # arr = [{a: 1, b: 2, c: 3}, {a: 4, b: 5, c: 6}]
59
+ # arr.find_hash_with({a: 4}) => {a: 4, b: 5, c: 6}
60
+ # arr.find_hash_with({"b" => 2, "c" => 3}) => {a: 1, b: 2, c: 3}
61
+ # arr.find_hash_with({ a: 4, c: 8 }) => nil
62
+ def find_hash_with(arg)
63
+ find { |h| h.stringify_keys.sub_hash?(arg.stringify_keys) }
64
+ end
65
+
66
+ ##
67
+ # Select hashes from array, which matches given arg
68
+ # arg: should be hash
69
+ #
70
+ # arr = [{a: 1, b: 2, c: 3}, {a: 4, b: 5, c: 6}, {a: 1, b: 8, c: 9}]
71
+ # arr.select_hash_with({ a: 1 }) => [{a: 1, b: 2, c: 3}, {a: 1, b: 8, c: 9}]
72
+ def select_hash_with(arg)
73
+ select { |h| h.stringify_keys.sub_hash?(arg.stringify_keys) }
74
+ end
75
+ end
@@ -5,3 +5,4 @@ require_relative 'hash/keys.rb'
5
5
  require_relative 'hash/merge.rb'
6
6
  require_relative 'hash/slice.rb'
7
7
  require_relative 'hash/values.rb'
8
+ require_relative 'hash/check.rb'
@@ -0,0 +1,21 @@
1
+
2
+ # frozen_string_literal: true
3
+
4
+ class Hash
5
+
6
+ ##
7
+ # Check if current hash is sub hash of given hash
8
+ # {a: 1, b: 2}.sub_hash_of?({a: 1, b: 2, c: 3, d: 4}) => true
9
+ # {a: 1, b: 2}.sub_hash_of?({a: 1, b: 5, c: 3, d: 4}) => false
10
+ def sub_hash_of?(hash)
11
+ hash.merge(self) == hash
12
+ end
13
+
14
+ ##
15
+ # Check if given hash is sub hash of current hash
16
+ # {a: 1, b: 2, c: 3, d: 4}.sub_hash?({a: 1, b: 2}) => true
17
+ # {a: 1, b: 2, c: 3, d: 4}.sub_hash?({c: 1, b: 2}) => false
18
+ def sub_hash?(hash)
19
+ merge(hash) == self
20
+ end
21
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Hash
2
4
  # Returns a hash that includes everything except given keys.
3
5
  # hash = { a: true, b: false, c: nil }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_ext
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tushar Hawaldar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-06 00:00:00.000000000 Z
11
+ date: 2020-02-09 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Core ruby extentions extracted from Rails ActiveSupport
14
14
  email:
@@ -20,11 +20,13 @@ files:
20
20
  - lib/simple_ext.rb
21
21
  - lib/simple_ext/array.rb
22
22
  - lib/simple_ext/array/access.rb
23
+ - lib/simple_ext/array/values.rb
23
24
  - lib/simple_ext/digest.rb
24
25
  - lib/simple_ext/digest/uuid.rb
25
26
  - lib/simple_ext/file.rb
26
27
  - lib/simple_ext/file/atomic.rb
27
28
  - lib/simple_ext/hash.rb
29
+ - lib/simple_ext/hash/check.rb
28
30
  - lib/simple_ext/hash/except.rb
29
31
  - lib/simple_ext/hash/keys.rb
30
32
  - lib/simple_ext/hash/merge.rb