Module: Hashie::Extensions::Dash::PropertyTranslation::InstanceMethods

Defined in:
lib/hashie/extensions/dash/property_translation.rb

Instance Method Summary collapse

Instance Method Details

#[]=(property, value) ⇒ Object

Sets a value on the Dash in a Hash-like way.

Note: Only works on pre-existing properties.



153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
# File 'lib/hashie/extensions/dash/property_translation.rb', line 153

def []=(property, value)
  if self.class.translation_exists? property
    send("#{property}=", value)

    if self.class.transformation_exists? property
      super property, self.class.transformed_property(property, value)
    elsif self.class.properties.include?(property)
      super(property, value)
    end
  elsif self.class.transformation_exists? property
    super property, self.class.transformed_property(property, value)
  elsif property_exists? property
    super
  end
end

#initialize_attributes(attributes) ⇒ Object

Deletes any keys that have a translation



170
171
172
173
174
175
176
177
178
179
# File 'lib/hashie/extensions/dash/property_translation.rb', line 170

def initialize_attributes(attributes)
  return unless attributes
  attributes_copy = attributes.dup.delete_if do |k, v|
    if self.class.translations_hash.include?(k)
      self[k] = v
      true
    end
  end
  super attributes_copy
end

#property_exists?(property) ⇒ Boolean

Raises an NoMethodError if the property doesn't exist

Returns:

  • (Boolean)


182
183
184
185
# File 'lib/hashie/extensions/dash/property_translation.rb', line 182

def property_exists?(property)
  fail_no_property_error!(property) unless self.class.property?(property)
  true
end