module Wallaby::ModelUtils

Model related utils

Public Class Methods

to_model_class(resources_name) click to toggle source

Convert resources name (e.g. `namespace::products`) into model class (e.g. `Namespace::Product`) @param resources_name [String] resources name @return [Class] model class @return [nil] when not found

# File lib/utils/wallaby/model_utils.rb, line 31
def to_model_class(resources_name)
  return if resources_name.blank?

  class_name = to_model_name resources_name
  # NOTE: DO NOT try to use const_defined? and const_get EVER.
  # This is Rails, use constantize
  class_name.constantize
rescue NameError
  Logger.warn Locale.t('errors.not_found.model', model: class_name), sourcing: 2..10
end
to_model_label(model_class) click to toggle source

Produce model label (e.g. `Namespace / Product`) for model class (e.g. `Namespace::Product`) @param model_class [Class, String] model class @return [String] model label

# File lib/utils/wallaby/model_utils.rb, line 19
def to_model_label(model_class)
  # TODO: change to use i18n translation
  return EMPTY_STRING if model_class.blank?

  model_class_name = to_model_name model_class
  model_class_name.titleize.gsub(SLASH, SPACE + SLASH + SPACE)
end
to_model_name(resources_name) click to toggle source

Convert resources name (e.g. `namespace::products`) into model name (e.g. `Namespace::Product`) @param resources_name [String] resources name @return [String] model name

# File lib/utils/wallaby/model_utils.rb, line 45
def to_model_name(resources_name)
  return EMPTY_STRING if resources_name.blank?

  resources_name.to_s.singularize.gsub(COLONS, SLASH).camelize
end
to_resources_name(model_class) click to toggle source

Convert model class (e.g. `Namespace::Product`) into resources name (e.g. `namespace::products`) @param model_class [Class, String] model class @return [String] resources name

# File lib/utils/wallaby/model_utils.rb, line 10
def to_resources_name(model_class)
  return EMPTY_STRING if model_class.blank?

  model_class.to_s.underscore.gsub(SLASH, COLONS).pluralize
end