ClassMethods

Constants

Methods

#default_properties

def default_properties
  @default_property ||= {}
end

#default_properties_keys

def default_properties_keys
  @default_properties_keys ||= default_properties.keys
end
#default_property

TODO: Move this to the DeclaredProperties

def default_property(name, &block)
  reset_default_properties(name) if default_properties.respond_to?(:size)
  default_properties[name] = block
end

#default_property_key

def default_property_key
  @default_property_key ||= default_properties_keys.first
end

#default_property_values

def default_property_values(instance)
  default_properties.each_with_object({}) do |(key, block), result|
    result[key] = block.call(instance)
  end
end

#reset_default_properties

def reset_default_properties(name_to_keep)
  default_properties.each_key do |property|
    @default_properties_keys = nil
    undef_method(property) unless property == name_to_keep
  end
  @default_properties_keys = nil
  @default_property = {}
end