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
194 195 196 |
# File 'lib/monkeypatch.rb', line 194 def compact delete_if { |_k, v| v.nil? } end |
#deep_merge(second) ⇒ Object
rubocop:disable Style/CaseEquality rubocop:disable Lint/UnusedBlockArgument
180 181 182 183 |
# File 'lib/monkeypatch.rb', line 180 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
198 199 200 201 202 203 204 205 |
# File 'lib/monkeypatch.rb', line 198 def fnselect(index = 0) { "Fn::Select": [ index, self ] } end |
#fnsplit(separator = "") ⇒ Object
31 32 33 34 35 36 37 38 |
# File 'lib/monkeypatch.rb', line 31 def fnsplit(separator = "") { "Fn::Split": [ separator, self ] } end |
#recursive_compact ⇒ Object
rubocop:enable Style/CaseEquality rubocop:enable Lint/UnusedBlockArgument
187 188 189 190 191 192 |
# File 'lib/monkeypatch.rb', line 187 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 |