Class: Hash

Inherits:
Object
  • Object
show all
Defined in:
lib/monkeypatch.rb,
lib/monkeypatch.rb

Instance Method Summary collapse

Instance Method Details

#compactObject



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_compactObject

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