class Titlezilla::Translator

Attributes

action_name[R]
context[R]
controller_name[R]
namespace[R]

Public Class Methods

new(controller_path, action_name, context = {}) click to toggle source
# File lib/titlezilla/translator.rb, line 7
def initialize(controller_path, action_name, context = {})
  @namespace, @controller_name = parse_namespace_and_controller_name(controller_path)
  @action_name = action_name.to_s.freeze
  @context = context
end

Public Instance Methods

application_title() click to toggle source
# File lib/titlezilla/translator.rb, line 21
def application_title
  @application_title ||= reverse_lookup('application')
end
meta_title() click to toggle source
# File lib/titlezilla/translator.rb, line 25
def meta_title
  [title, application_title].compact.join(::Titlezilla.configuration.separator)
end
title(override = nil) click to toggle source
# File lib/titlezilla/translator.rb, line 13
def title(override = nil)
  if !override
    @title ||= lookup(controller_name, map(action_name))
  else
    @title = override
  end
end

Private Instance Methods

i18n_set?(key) click to toggle source
# File lib/titlezilla/translator.rb, line 64
def i18n_set?(key)
  I18n.t(key, raise: true) rescue false
end
lookup(*key) click to toggle source
# File lib/titlezilla/translator.rb, line 41
def lookup(*key)
  lookup_with_namespace(key, namespace)
end
lookup_with_namespace(keys, namespace) click to toggle source
# File lib/titlezilla/translator.rb, line 55
def lookup_with_namespace(keys, namespace)
  t_key = [:titles, namespace, keys].flatten.compact.join('.')
  i18n_set?(t_key) ? I18n.t(t_key, context) : nil
end
map(action_name) click to toggle source
# File lib/titlezilla/translator.rb, line 60
def map(action_name)
  (::Titlezilla.configuration.action_map[action_name.to_sym] || action_name).to_s.freeze
end
parse_namespace_and_controller_name(controller_path) click to toggle source
# File lib/titlezilla/translator.rb, line 31
def parse_namespace_and_controller_name(controller_path)
  parts = controller_path.to_s.split('/')
  parts.map!(&:to_s).map!(&:freeze)
  if parts.size > 1
    [parts[(0...-1)], parts[-1]]
  else
    [[], parts[0].to_s.freeze]
  end
end
reverse_lookup(*key) click to toggle source
# File lib/titlezilla/translator.rb, line 45
def reverse_lookup(*key)
  title_namespace = namespace.dup
  begin
    title = lookup_with_namespace(key, title_namespace)
    return title if title
    title_namespace.pop
  end while title_namespace.size > 0
  lookup_with_namespace(key, title_namespace)
end