class TT::Base

Public Class Methods

config(custom = nil, &block) click to toggle source
# File lib/t_t/base.rb, line 78
def self.config(custom = nil, &block)
  @settings ||= {}

  if custom
    unknown = custom.keys.detect { |key| ![:downcase, :prefix].include?(key) }
    if unknown
      TT.raise_error "`#{ unknown }` is a wrong key in the configuration"
    else
      @settings.merge!(custom)
    end
  end

  instance_exec(&block) if block_given?

  @settings
end
lookup_key_method(meth_name, path) click to toggle source
# File lib/t_t/base.rb, line 69
    def self.lookup_key_method(meth_name, path)
      class_eval <<-RUBY
        def #{ meth_name }(key, options = {})
          I18n.t "\#{ _config.fetch(:ns) }.#{ path }.\#{ key }",
            { default: [:"#{ path }.\#{ key }"] }.merge(options)
        end
      RUBY
    end
new(ns, section = nil) click to toggle source
# File lib/t_t/base.rb, line 97
def initialize(ns, section = nil)
  @lookup   = Utils.lookup(self.class.config[:prefix], nil)
  @b_lookup = Utils.lookup(self.class.config[:prefix], :base)
  @e_lookup = Utils.lookup(self.class.config[:prefix], :messages)

  ns = Utils.to_parts(ns).join('.')
  @config = { ns: ns, root: (section ? "#{ ns }.#{ section }" : ns) }
  default_model = ns.to_s.singularize

  @config[:attributes] = @lookup.call(default_model, :attributes)
  @config[:models]     = @lookup.call(default_model, :models)
  @config[:actions]    = @b_lookup.call(default_model, :actions)
  @config[:enums]      = @b_lookup.call(default_model, :enums)
  @config[:errors]     = @e_lookup.call(default_model, :errors)

  @downcase = self.class.config.fetch(:downcase, Utils::DOWNCASE)
end

Public Instance Methods

a(name, model_name = nil, custom = {}) click to toggle source
# File lib/t_t/base.rb, line 115
def a(name, model_name = nil, custom = {})
  path, defaults = _resolve(@b_lookup, model_name, :actions, name)

  resource = r(model_name)
  resources = rs(model_name)
  I18n.t path, {
    default: defaults, r: @downcase.call(resource, I18n.locale), R: resource,
    rs: @downcase.call(resources, I18n.locale), RS: resources
  }.merge!(custom)
end
attr(name, model_name = nil) click to toggle source
# File lib/t_t/base.rb, line 126
def attr(name, model_name = nil)
  path, defaults = _resolve(@lookup, model_name, :attributes, name)
  I18n.t path, default: defaults
end
e(attr_name, error_name, *args) click to toggle source
# File lib/t_t/base.rb, line 136
def e(attr_name, error_name, *args)
  custom = args.last.is_a?(Hash) ? args.pop : {}
  model_name = args.first
  path, defaults = _resolve_errors(model_name, attr_name, error_name)
  I18n.t path, { default: defaults }.merge!(custom)
end
enum(name, kind, model_name = nil) click to toggle source
# File lib/t_t/base.rb, line 131
def enum(name, kind, model_name = nil)
  path, defaults = _resolve(@b_lookup, model_name, :enums, "#{ name }.#{ kind }")
  I18n.t path, default: defaults
end
r(model_name = nil) click to toggle source
# File lib/t_t/base.rb, line 143
def r(model_name = nil)
  rs(model_name, 1)
end
rs(model_name = nil, count = 10) click to toggle source
# File lib/t_t/base.rb, line 147
def rs(model_name = nil, count = 10)
  path, defaults = _resolve(@lookup, model_name, :models, nil)
  # cut from defaults :"#{ orm }.models", :models
  I18n.t path, default: defaults[0...-2], count: count
end
t(key, custom = {}) click to toggle source
# File lib/t_t/base.rb, line 153
def t(key, custom = {})
  defaults = [:"#{ _config.fetch(:ns) }.common.#{ key }"].concat(Array(custom[:default]))
  I18n.t "#{ _config.fetch(:root) }.#{ key  }", custom.merge(default: defaults)
end

Private Instance Methods

_config() click to toggle source
# File lib/t_t/base.rb, line 160
def _config
  @config
end
_resolve(lookup, model_name, type, key) click to toggle source
# File lib/t_t/base.rb, line 174
def _resolve(lookup, model_name, type, key)
  paths = model_name ? lookup.call(model_name, type) : _config.fetch(type)
  if key
    return "#{ paths.first }.#{ key }", paths.last.map { |i| :"#{ i }.#{ key }" }
  else
    return *paths
  end
end
_resolve_errors(model_name, attr_name, error_name) click to toggle source
# File lib/t_t/base.rb, line 164
def _resolve_errors(model_name, attr_name, error_name)
  if attr_name == :base
    _resolve(@e_lookup, model_name, :errors, error_name)
  else
    path, _defaults = _resolve(@lookup, model_name, :errors, "#{ attr_name }.#{ error_name }")
    defaults = _defaults + ["errors.messages.#{ error_name }".to_sym]
    return path, defaults
  end
end