Class: Hash

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

Instance Method Summary collapse

Instance Method Details

#compactObject



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_compactObject

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