Class: Humidifier::Props::MapProp

Inherits:
Base
  • Object
show all
Defined in:
lib/humidifier/props/map_prop.rb

Overview

A property that is contained in a Map

Constant Summary

Constants inherited from Base

Base::WHITELIST

Instance Attribute Summary collapse

Attributes inherited from Base

#key, #name, #spec, #substructs

Instance Method Summary collapse

Methods inherited from Base

#documentation, #initialize, #required?, #update_type, #whitelisted_value?

Constructor Details

This class inherits a constructor from Humidifier::Props::Base

Instance Attribute Details

#subpropObject (readonly)

Returns the value of attribute subprop.



5
6
7
# File 'lib/humidifier/props/map_prop.rb', line 5

def subprop
  @subprop
end

Instance Method Details

#convert(map) ⇒ Object

converts the value through mapping using the subprop unless it is valid



8
9
10
11
# File 'lib/humidifier/props/map_prop.rb', line 8

def convert(map)
  return map if valid?(map)
  map.map { |key, value| [key, subprop.convert(value)] }.to_h
end

#to_cf(map) ⇒ Object

CFN stack syntax



14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/humidifier/props/map_prop.rb', line 14

def to_cf(map)
  cf_value =
    if map.respond_to?(:to_cf)
      map.to_cf
    else
      map.each_with_object({}) do |(subkey, subvalue), serialized|
        serialized[subkey] = subprop.to_cf(subvalue).last
      end
    end

  [key, cf_value]
end

#valid?(map) ⇒ Boolean

Valid if the value is whitelisted or every value in the map is valid on the subprop

Returns:

  • (Boolean)


29
30
31
32
# File 'lib/humidifier/props/map_prop.rb', line 29

def valid?(map)
  return true if whitelisted_value?(map)
  map.is_a?(Hash) && map.values.all? { |value| subprop.valid?(value) }
end