Sha256: 2df21c13fb07157c2899ad2734d8a049789f8c9c324a537a29bf1c8b7eba7bfd

Contents?: true

Size: 1012 Bytes

Versions: 1

Compression:

Stored size: 1012 Bytes

Contents

class RestModel
  module Source
    class Translation
      attr_accessor :values, :from_source, :to_source

      def initialize(attrs = {})
        @values      = attrs[:values]
        @from_source = attrs[:from_source]
        @to_source   = attrs[:to_source]
      end

      def translates_from_source?
        from_source or values
      end

      def translate_from_source(value, resource)
        if from_source
          resource.instance_exec(value, &from_source)
        elsif values
          fail "from source error" unless values.has_value?(value)
          values.key(value)
        else
          value
        end
      end

      def translates_to_source?
        to_source or values
      end

      def translate_to_source(value, resource)
        if to_source
          resource.instance_exec(value, &to_source)
        elsif values
          fail "to source error" unless values.has_key?(value)
          values[value]
        else
          value
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rest_model-0.1.6 lib/rest_model/source/translation.rb