Sha256: b12997728811d13590f214080c3ffeaa172693785da6ae96f2b53b50de1b6e2a

Contents?: true

Size: 852 Bytes

Versions: 44

Compression:

Stored size: 852 Bytes

Contents

module JsonApiClient
  module Utils

    def self.compute_type(klass, type_name)
      # If the type is prefixed with a scope operator then we assume that
      # the type_name is an absolute reference.
      return type_name.constantize if type_name.match(/^::/)

      # Build a list of candidates to search for
      candidates = []
      klass.name.scan(/::|$/) { candidates.unshift "#{$`}::#{type_name}" }
      candidates << type_name

      candidates.each do |candidate|
        begin
          constant = candidate.constantize
          return constant if candidate == constant.to_s
        rescue NameError => e
          # We don't want to swallow NoMethodError < NameError errors
          raise e unless e.instance_of?(NameError)
        end
      end

      raise NameError, "uninitialized constant #{candidates.first}"
    end

  end
end

Version data entries

44 entries across 44 versions & 1 rubygems

Version Path
json_api_client-1.5.3 lib/json_api_client/utils.rb
json_api_client-1.5.2 lib/json_api_client/utils.rb
json_api_client-1.5.1 lib/json_api_client/utils.rb
json_api_client-1.5.0 lib/json_api_client/utils.rb
json_api_client-1.4.0 lib/json_api_client/utils.rb
json_api_client-1.3.0 lib/json_api_client/utils.rb
json_api_client-1.2.0 lib/json_api_client/utils.rb
json_api_client-0.9.6 lib/json_api_client/utils.rb
json_api_client-1.1.1 lib/json_api_client/utils.rb
json_api_client-1.1.0 lib/json_api_client/utils.rb
json_api_client-1.0.2 lib/json_api_client/utils.rb
json_api_client-0.9.5 lib/json_api_client/utils.rb
json_api_client-1.0.1 lib/json_api_client/utils.rb
json_api_client-1.0.0 lib/json_api_client/utils.rb
json_api_client-1.0.0.beta7 lib/json_api_client/utils.rb
json_api_client-1.0.0.beta6 lib/json_api_client/utils.rb
json_api_client-0.9.4 lib/json_api_client/utils.rb
json_api_client-0.9.3 lib/json_api_client/utils.rb
json_api_client-1.0.0.beta5 lib/json_api_client/utils.rb
json_api_client-1.0.0.beta4 lib/json_api_client/utils.rb