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