Class: Hash

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

Instance Method Summary collapse

Instance Method Details

#compactObject



215
216
217
# File 'lib/monkeypatch.rb', line 215

def compact
  delete_if { |_k, v| v.nil? }
end

#deep_merge(second) ⇒ Object

rubocop:disable Style/CaseEquality rubocop:disable Lint/UnusedBlockArgument



201
202
203
204
# File 'lib/monkeypatch.rb', line 201

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

#fnbase64Object



240
241
242
243
244
# File 'lib/monkeypatch.rb', line 240

def fnbase64
  {
    "Fn::Base64": self
  }
end

#fnjoin(separator = "") ⇒ Object



40
41
42
43
44
45
46
47
# File 'lib/monkeypatch.rb', line 40

def fnjoin(separator = "")
  {
    "Fn::Join": [
      separator,
      self
    ]
  }
end

#fnselect(index = 0) ⇒ Object



219
220
221
222
223
224
225
226
# File 'lib/monkeypatch.rb', line 219

def fnselect(index = 0)
  {
    "Fn::Select": [
      index,
      self
    ]
  }
end

#fnsplit(separator = "") ⇒ Object



49
50
51
52
53
54
55
56
# File 'lib/monkeypatch.rb', line 49

def fnsplit(separator = "")
  {
    "Fn::Split": [
      separator,
      self
    ]
  }
end

#fnsub(variable_map = nil) ⇒ Object



228
229
230
231
232
233
234
235
236
237
238
# File 'lib/monkeypatch.rb', line 228

def fnsub(variable_map = nil)
  unless variable_map
    return { "Fn::Sub": self }
  end
  {
    "Fn::Sub": [
      self,
      variable_map
    ]
  }
end

#recursive_compactObject

rubocop:enable Style/CaseEquality rubocop:enable Lint/UnusedBlockArgument



208
209
210
211
212
213
# File 'lib/monkeypatch.rb', line 208

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