# File lib/fog/core/attributes.rb, line 17
      def attribute(name, options = {})
        class_eval "def \#{name}\nattributes[:\#{name}]\nend\n", __FILE__, __LINE__
        case options[:type]
        when :boolean
          class_eval "def \#{name}=(new_\#{name})\nattributes[:\#{name}] = case new_\#{name}\nwhen true,'true'\ntrue\nwhen false,'false'\nfalse\nend\nend\n", __FILE__, __LINE__
        when :float
          class_eval "def \#{name}=(new_\#{name})\nattributes[:\#{name}] = new_\#{name}.to_f\nend\n", __FILE__, __LINE__
        when :integer
          class_eval "def \#{name}=(new_\#{name})\nattributes[:\#{name}] = new_\#{name}.to_i\nend\n", __FILE__, __LINE__
        when :string
          class_eval "def \#{name}=(new_\#{name})\nattributes[:\#{name}] = new_\#{name}.to_s\nend\n", __FILE__, __LINE__
        when :time
          class_eval "def \#{name}=(new_\#{name})\nattributes[:\#{name}] = if new_\#{name}.nil? || new_\#{name} == \"\" || new_\#{name}.is_a?(Time)\nnew_\#{name}\nelse\nTime.parse(new_\#{name})\nend\nend\n", __FILE__, __LINE__
        when :array
          class_eval "def \#{name}=(new_\#{name})\nattributes[:\#{name}] = [*new_\#{name}]\nend\n", __FILE__, __LINE__
        else
          if squash = options[:squash]
            class_eval "def \#{name}=(new_data)\nif new_data.is_a?(Hash)\nif new_data.has_key?(:'\#{squash}')\nattributes[:\#{name}] = new_data[:'\#{squash}']\nelsif new_data.has_key?(\"\#{squash}\")\nattributes[:\#{name}] = new_data[\"\#{squash}\"]\nelse\nattributes[:\#{name}] = [ new_data ]\nend\nelse\nattributes[:\#{name}] = new_data\nend\nend\n", __FILE__, __LINE__
          else
            class_eval "def \#{name}=(new_\#{name})\nattributes[:\#{name}] = new_\#{name}\nend\n", __FILE__, __LINE__
          end
        end
        @attributes ||= []
        @attributes |= [name]
        for new_alias in [*options[:aliases]]
          aliases[new_alias] = name
        end
      end