module JSONAPI::TypeConversion
def format_type_name(full_name, format)
def format_type_name(full_name, format) case format when :prefixed full_name when :underscore full_name.tr("/", "_") else # :flat full_name.split("/").last end end
def model_type_name(model_class, format: nil)
def model_type_name(model_class, format: nil) format ||= JSONAPI.configuration.namespace_type_format full_name = model_class.name.underscore.pluralize format_type_name(full_name, format) end
def prefixed_type_to_class(type_str)
def prefixed_type_to_class(type_str) parts = type_str.split("/") "#{parts[0..-2].join("/").camelize}::#{parts.last.singularize.classify}" end
def resolve_type_format(definition_class)
def resolve_type_format(definition_class) if definition_class.respond_to?(:type_format) && definition_class.type_format definition_class.type_format else JSONAPI.configuration.namespace_type_format end end
def resource_type_name(definition_class, format: nil)
def resource_type_name(definition_class, format: nil) format ||= resolve_type_format(definition_class) full_name = definition_class.name.sub(/Resource$/, "").underscore.pluralize format_type_name(full_name, format) end
def type_to_class_name(type, namespace: nil)
def type_to_class_name(type, namespace: nil) type_str = type.to_s return prefixed_type_to_class(type_str) if type_str.include?("/") return "#{namespace.to_s.camelize}::#{type_str.singularize.classify}" if namespace.present? type_str.singularize.classify end