module Fog::Attributes::ClassMethods

Public Instance Methods

_load(marshalled) click to toggle source
# File lib/fog/core/attributes.rb, line 5
def _load(marshalled)
  new(Marshal.load(marshalled))
end
aliases() click to toggle source
# File lib/fog/core/attributes.rb, line 9
def aliases
  @aliases ||= {}
end
attribute(name, options = {}) click to toggle source
# File lib/fog/core/attributes.rb, line 17
      def attribute(name, options = {})
        class_eval "          def #{name}
            attributes[:#{name}]
          end
", __FILE__, __LINE__
        case options[:type]
        when :boolean
          class_eval "            def #{name}=(new_#{name})
              attributes[:#{name}] = case new_#{name}
              when true,'true'
                true
              when false,'false'
                false
              end
            end
", __FILE__, __LINE__
        when :float
          class_eval "            def #{name}=(new_#{name})
              attributes[:#{name}] = new_#{name}.to_f
            end
", __FILE__, __LINE__
        when :integer
          class_eval "            def #{name}=(new_#{name})
              attributes[:#{name}] = new_#{name}.to_i
            end
", __FILE__, __LINE__
        when :string
          class_eval "            def #{name}=(new_#{name})
              attributes[:#{name}] = new_#{name}.to_s
            end
", __FILE__, __LINE__
        when :time
          class_eval "            def #{name}=(new_#{name})
              attributes[:#{name}] = if new_#{name}.nil? || new_#{name} == "" || new_#{name}.is_a?(Time)
                new_#{name}
              else
                Time.parse(new_#{name})
              end
            end
", __FILE__, __LINE__
        when :timestamp
          class_eval "            def #{name}=(new_#{name})
              attributes[:#{name}] = Time.at(new_#{name}.to_i)
            end
", __FILE__, __LINE__
        when :array
          class_eval "          def #{name}=(new_#{name})
            attributes[:#{name}] = [*new_#{name}]
          end
", __FILE__, __LINE__
        else
          if squash = options[:squash]
            class_eval "              def #{name}=(new_data)
                if new_data.is_a?(Hash)
                  if new_data.has_key?(:'#{squash}')
                    attributes[:#{name}] = new_data[:'#{squash}']
                  elsif new_data.has_key?("#{squash}")
                    attributes[:#{name}] = new_data["#{squash}"]
                  else
                    attributes[:#{name}] = [ new_data ]
                  end
                else
                  attributes[:#{name}] = new_data
                end
              end
", __FILE__, __LINE__
          else
            class_eval "              def #{name}=(new_#{name})
                attributes[:#{name}] = new_#{name}
              end
", __FILE__, __LINE__
          end
        end
        @attributes ||= []
        @attributes |= [name]
        for new_alias in [*options[:aliases]]
          aliases[new_alias] = name
        end
      end
attributes() click to toggle source
# File lib/fog/core/attributes.rb, line 13
def attributes
  @attributes ||= []
end
identity(name, options = {}) click to toggle source
# File lib/fog/core/attributes.rb, line 107
def identity(name, options = {})
  @identity = name
  self.attribute(name, options)
end
ignore_attributes(*args) click to toggle source
# File lib/fog/core/attributes.rb, line 112
def ignore_attributes(*args)
  @ignored_attributes = args.collect {|attr| attr.to_s }
end
ignored_attributes() click to toggle source
# File lib/fog/core/attributes.rb, line 116
def ignored_attributes
  @ignored_attributes ||= []
end