class Graphiti::Util::Class

Public Class Methods

graphql_type_name(name) click to toggle source
# File lib/graphiti/util/class.rb, line 24
def self.graphql_type_name(name)
  name.gsub("Resource", "")
    .gsub("::", "") # remove modules
    .gsub(".", "__") # remove remote resource .
end
infer_resource_class(parent_resource_class, sideload_name) click to toggle source
# File lib/graphiti/util/class.rb, line 4
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
namespace_for(klass) click to toggle source
# File lib/graphiti/util/class.rb, line 17
def self.namespace_for(klass)
  namespace = klass.name
  return "" unless namespace
  split = namespace.split("::")
  split[0, split.length - 1].join("::")
end