Sha256: 62a61815b1a1f7a6534403af15809e47314dfb7463976fcd895e989e74a4ca45

Contents?: true

Size: 638 Bytes

Versions: 5

Compression:

Stored size: 638 Bytes

Contents

class RestModel
  class Property
    module Retriever
      def from_source(item, resource = nil)
        value = digg(item)
        translate_from_source(serializer.serialize(value), resource)
      end

      def digg(input)
        source_path.inject(input) {|buffer, key| buffer = buffer[key]}
      end

      def translate_from_source(value, resource)
        case translations
        when nil  then value
        when Proc then resource.instance_eval(&translations)
        when Hash
          fail "from input error" unless translations.has_value?(value)
          translations.key(value)
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
rest_model-0.1.4 lib/rest_model/key/property/retriever.rb
rest_model-0.1.3 lib/rest_model/key/property/retriever.rb
rest_model-0.1.2 lib/rest_model/key/property/retriever.rb
rest_model-0.1.1 lib/rest_model/key/property/retriever.rb
rest_model-0.1.0 lib/rest_model/key/property/retriever.rb