Sha256: e28a8349a9af1f59ccc0ffdbb2d2abe6bdac2084d50745235dba23451e183df3

Contents?: true

Size: 804 Bytes

Versions: 61

Compression:

Stored size: 804 Bytes

Contents

module Graphiti
  module Util
    class Class
      def self.infer_resource_class(parent_resource_class, sideload_name)
        namespace = namespace_for(parent_resource_class)
        inferred_name = "#{sideload_name.to_s.singularize.classify}Resource"
        klass_name = "#{namespace}::#{inferred_name}"
        tried = [klass_name, inferred_name]
        klass = klass_name.safe_constantize
        klass ||= inferred_name.safe_constantize
        unless klass
          raise Errors::ResourceNotFound.new(parent_resource_class, sideload_name, tried)
        end
        klass
      end

      def self.namespace_for(klass)
        namespace = klass.name
        return '' unless namespace
        split = namespace.split('::')
        split[0,split.length-1].join('::')
      end
    end
  end
end

Version data entries

61 entries across 61 versions & 1 rubygems

Version Path
graphiti-1.0.rc.21 lib/graphiti/util/class.rb
graphiti-1.0.rc.19 lib/graphiti/util/class.rb
graphiti-1.0.rc.18 lib/graphiti/util/class.rb
graphiti-1.0.rc.17 lib/graphiti/util/class.rb
graphiti-1.0.rc.16 lib/graphiti/util/class.rb
graphiti-1.0.rc.15 lib/graphiti/util/class.rb
graphiti-1.0.rc.14 lib/graphiti/util/class.rb
graphiti-1.0.rc.12 lib/graphiti/util/class.rb
graphiti-1.0.rc.11 lib/graphiti/util/class.rb
graphiti-1.0.rc.10 lib/graphiti/util/class.rb
graphiti-1.0.rc.9 lib/graphiti/util/class.rb
graphiti-1.0.rc.8 lib/graphiti/util/class.rb
graphiti-1.0.rc.7 lib/graphiti/util/class.rb
graphiti-1.0.rc.6 lib/graphiti/util/class.rb
graphiti-1.0.rc.5 lib/graphiti/util/class.rb
graphiti-1.0.rc.4 lib/graphiti/util/class.rb
graphiti-1.0.rc.3 lib/graphiti/util/class.rb
graphiti-1.0.rc.2 lib/graphiti/util/class.rb
graphiti-1.0.rc.1 lib/graphiti/util/class.rb
graphiti-1.0.beta.23 lib/graphiti/util/class.rb