class Hanami::Action::ViewNameInferrer

@since 2.0.0 @api private

Constants

ALTERNATIVE_NAMES

@since 2.0.0 @api private

Public Class Methods

call(action_name:, provider:) click to toggle source

@since 2.0.0 @api private

# File lib/hanami/action/view_name_inferrer.rb, line 18
def call(action_name:, provider:)
  application = provider.respond_to?(:application) ? provider.application : Hanami.application

  action_identifier_base = application.config.actions.name_inference_base
  view_identifier_base = application.config.actions.view_name_inference_base

  identifier = action_identifier_name(action_name, provider, action_identifier_base)

  view_name = [view_identifier_base, identifier].compact.join(".")

  [view_name, alternative_view_name(view_name)].compact
end

Private Class Methods

action_identifier_name(action_name, provider, name_base) click to toggle source

@since 2.0.0 @api private

# File lib/hanami/action/view_name_inferrer.rb, line 35
def action_identifier_name(action_name, provider, name_base)
  provider
    .inflector
    .underscore(action_name)
    .sub(/^#{provider.namespace_path}\//, "")
    .sub(/^#{name_base}\//, "")
    .gsub("/", ".")
end
alternative_view_name(view_name) click to toggle source

@since 2.0.0 @api private

# File lib/hanami/action/view_name_inferrer.rb, line 46
def alternative_view_name(view_name)
  parts = view_name.split(".")

  alternative_name = ALTERNATIVE_NAMES[parts.last]

  [parts[0..-2], alternative_name].join(".") if alternative_name
end