Module: CloudFormer::HasPropertiesAndAttributes::ClassMethods
- Defined in:
- lib/cloud_former/has_properties_and_attributes.rb
Instance Method Summary collapse
- #aws_attribute(name, options = {}) ⇒ Object
- #aws_attribute_wrapper(name) ⇒ Object
- #aws_attributes ⇒ Object
- #aws_properties ⇒ Object
- #aws_property(name, options = {}) ⇒ Object
- #check_type_of_aws_value(name, val, options) ⇒ Object
- #get_aws_attribute_wrapper ⇒ Object
- #make_aws_accessor(name, options) ⇒ Object
Instance Method Details
#aws_attribute(name, options = {}) ⇒ Object
16 17 18 19 20 |
# File 'lib/cloud_former/has_properties_and_attributes.rb', line 16 def aws_attribute(name, ={}) @aws_attributes ||= [] @aws_attributes << PropertyOrAttribute.new(name, ) make_aws_accessor(name, ) end |
#aws_attribute_wrapper(name) ⇒ Object
22 23 24 |
# File 'lib/cloud_former/has_properties_and_attributes.rb', line 22 def aws_attribute_wrapper(name) @aws_attribute_wrapper = name end |
#aws_attributes ⇒ Object
108 109 110 111 112 113 114 115 116 117 |
# File 'lib/cloud_former/has_properties_and_attributes.rb', line 108 def aws_attributes answer = [] if defined?(@aws_attributes) answer = @aws_attributes end if superclass && superclass.respond_to?(:aws_attributes) answer += superclass.aws_attributes end answer end |
#aws_properties ⇒ Object
97 98 99 100 101 102 103 104 105 106 |
# File 'lib/cloud_former/has_properties_and_attributes.rb', line 97 def aws_properties answer = [] if defined?(@aws_properties) answer = @aws_properties end if superclass && superclass.respond_to?(:aws_properties) answer += superclass.aws_properties end answer end |
#aws_property(name, options = {}) ⇒ Object
10 11 12 13 14 |
# File 'lib/cloud_former/has_properties_and_attributes.rb', line 10 def aws_property(name, ={}) @aws_properties ||= [] @aws_properties << PropertyOrAttribute.new(name, ) make_aws_accessor(name, ) end |
#check_type_of_aws_value(name, val, options) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/cloud_former/has_properties_and_attributes.rb', line 26 def check_type_of_aws_value(name, val, ) if !val.is_a?([:type]) failed = true if [:type] == String if val.is_a?(Fixnum) failed = false elsif val.is_a?(PseudoParameter) failed = false elsif val.respond_to?(:acts_as_string?) && val.acts_as_string? failed = false end end if val.is_a?(Parameter) || val.is_a?(Resource) failed = false end if [:type] == Boolean && val == true || val == false failed = false end if failed raise ArgumentError.new( "A #{[:type].name} is required for #{name} in #{self.name}, but a #{val.class.name} was given." ) end end end |
#get_aws_attribute_wrapper ⇒ Object
119 120 121 122 123 124 125 |
# File 'lib/cloud_former/has_properties_and_attributes.rb', line 119 def get_aws_attribute_wrapper if defined?(@aws_attribute_wrapper) @aws_attribute_wrapper else nil end end |
#make_aws_accessor(name, options) ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/cloud_former/has_properties_and_attributes.rb', line 55 def make_aws_accessor(name, ) define_method(name) do |val='!!!****noarggiven****!!!'| if val != '!!!****noarggiven****!!!' if [:list] && !val.respond_to?(:each) if (!val.respond_to?(:acts_as_list?) || !val.acts_as_list?) && [:list] != :ok raise ArgumentError.new( "A list is required for #{name} in #{self.class.name}, but a #{val.class.name} was given." ) end end if [:list] unless val.respond_to?(:acts_as_list?) && val.acts_as_list? if [:list] == :ok if val.respond_to?(:each) val.each do |item| self.class.check_type_of_aws_value(name, item, ) end else self.class.check_type_of_aws_value(name, val, ) end else val.each do |item| self.class.check_type_of_aws_value(name, item, ) end end end else self.class.check_type_of_aws_value(name, val, ) end instance_variable_set("@#{name}", val) end if instance_variable_defined?("@#{name}") instance_variable_get("@#{name}") else nil end end end |