Class: Hash
- Inherits:
-
Object
- Object
- Hash
- Defined in:
- lib/monkeypatch.rb,
lib/monkeypatch.rb
Instance Method Summary collapse
- #compact ⇒ Object
-
#deep_merge(second) ⇒ Object
rubocop:disable Style/CaseEquality rubocop:disable Lint/UnusedBlockArgument.
- #fnselect(index = 0) ⇒ Object
- #fnsplit(separator = "") ⇒ Object
-
#recursive_compact ⇒ Object
rubocop:enable Style/CaseEquality rubocop:enable Lint/UnusedBlockArgument.
Instance Method Details
#compact ⇒ Object
212 213 214 |
# File 'lib/monkeypatch.rb', line 212 def compact delete_if { |_k, v| v.nil? } end |
#deep_merge(second) ⇒ Object
rubocop:disable Style/CaseEquality rubocop:disable Lint/UnusedBlockArgument
198 199 200 201 |
# File 'lib/monkeypatch.rb', line 198 def deep_merge(second) merger = proc { |key, v1, v2| Hash === v1 && Hash === v2 ? v1.merge(v2, &merger) : Array === v1 && Array === v2 ? v1 | v2 : [:undefined, nil, :nil].include?(v2) ? v1 : v2 } self.merge(second.to_h, &merger) end |
#fnselect(index = 0) ⇒ Object
216 217 218 219 220 221 222 223 |
# File 'lib/monkeypatch.rb', line 216 def fnselect(index = 0) { "Fn::Select": [ index, self ] } end |
#fnsplit(separator = "") ⇒ Object
40 41 42 43 44 45 46 47 |
# File 'lib/monkeypatch.rb', line 40 def fnsplit(separator = "") { "Fn::Split": [ separator, self ] } end |
#recursive_compact ⇒ Object
rubocop:enable Style/CaseEquality rubocop:enable Lint/UnusedBlockArgument
205 206 207 208 209 210 |
# File 'lib/monkeypatch.rb', line 205 def recursive_compact delete_if do |k, v| next if v == false || k =~ /Fn\:/ (v.respond_to?(:empty?) ? v.empty? : !v) || v.instance_of?(Hash) && v.recursive_compact.empty? end end |