Class: Hashie::Trash

### Home Classes Methods

### In Files

- lib/hashie/trash.rb

### Parent

Hashie::Dash

### Methods

- ::permitted_input_keys
- ::property
- #[]=

### Class/Module Index

Quicksearch

- Hashie
- Hashie::Clash
- Hashie::Clash::ChainError
- Hashie::Dash
- Hashie::Extensions
- Hashie::Extensions::Coercion
- Hashie::Extensions::Coercion::ClassMethods
- Hashie::Extensions::Coercion::InstanceMethods
- Hashie::Extensions::DeepFetch
- Hashie::Extensions::DeepFetch::UndefinedPathError
- Hashie::Extensions::DeepMerge
- Hashie::Extensions::IgnoreUndeclared
- Hashie::Extensions::IndifferentAccess
- Hashie::Extensions::KeyConversion
- Hashie::Extensions::MergeInitializer
- Hashie::Extensions::MethodAccess
- Hashie::Extensions::MethodQuery
- Hashie::Extensions::MethodReader
- Hashie::Extensions::MethodWriter
- Hashie::Extensions::StringifyKeys
- Hashie::Extensions::SymbolizeKeys
- Hashie::Hash
- Hashie::HashExtensions
- Hashie::Mash
- Hashie::PrettyInspect
- Hashie::Rash
- Hashie::Trash

No matching classes.

# Hashie::Trash

A Trash is a 'translated' Dash where the keys can be remapped from a source hash.

Trashes are useful when you need to read data from another application, such as a Java api, where the keys are named differently from how we would in Ruby.

### Public Class Methods

permitted_input_keys() click to toggle source

    # File lib/hashie/trash.rb, line 55
    def self.permitted_input_keys
      @permitted_input_keys ||= properties.map { |property| inverse_translations.fetch property, property }
    end

property(property_name, options = {}) click to toggle source

Defines a property on the Trash. Options are as follows:

- `:default` - Specify a default value for this property, to be

returned before a value is set on the property in a new Dash.

- `:from` - Specify the original key name that will be write only.

- `:with` - Specify a lambda to be used to convert value.

- `:transform_with` - Specify a lambda to be used to convert value

without using the :from option. It transform the property itself.

    # File lib/hashie/trash.rb, line 19
    def self.property(property_name, options = {})
      super

      options[:from] = options[:from].to_sym if options[:from]
      property_name = property_name.to_sym

      if options[:from]
        if property_name == options[:from]
          fail ArgumentError, "Property name (#{property_name}) and :from option must not be the same"
        end

        translations[options[:from].to_sym] = property_name.to_sym

        define_method "#{options[:from]}=" do |val|
          with = options[:with] || options[:transform_with]
          self[property_name.to_sym] = with.respond_to?(:call) ? with.call(val) : val
        end
      else
        if options[:transform_with].respond_to? :call
          transforms[property_name.to_sym] = options[:transform_with]
        end
      end
    end

### Public Instance Methods

[]=(property, value) click to toggle source

Set a value on the Dash in a Hash-like way. Only works on pre-existing properties.

    # File lib/hashie/trash.rb, line 45
    def []=(property, value)
      if self.class.translations.key? property.to_sym
        send("#{property}=", value)
      elsif self.class.transforms.key? property.to_sym
        super property, self.class.transforms[property.to_sym].call(value)
      elsif property_exists? property
        super
      end
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.