class Tr8n::Config

Acts as a global singleton that holds all Tr8n configuration The class can be extended with a different implementation, as long as the interface is supported

Attributes

application[RW]

Configuration Attributes

cache[RW]

Configuration Attributes

context_rules[RW]

Configuration Attributes

current_locale_method[RW]

Used by Rails and Sinatra extensions

current_user_method[RW]

Used by Rails and Sinatra extensions

default_level[RW]

Configuration Attributes

default_locale[RW]

Configuration Attributes

default_tokens[RW]

Configuration Attributes

enabled[RW]

Configuration Attributes

format[RW]

Configuration Attributes

localization[RW]

Configuration Attributes

logger[RW]

Configuration Attributes

submit_missing_keys_realtime[RW]

Used for IRB only

translator_options[RW]

Used by Rails and Sinatra extensions

Public Class Methods

new() click to toggle source
# File lib/tr8n/config.rb, line 86
def initialize
  @enabled = true
  @default_locale = 'en'
  @default_level  = 0
  @format = :html

  # if running from IRB, make it default to TRUE
  @submit_missing_keys_realtime = (%w(irb pry).include?($0 || ''))

  @current_locale_method = :current_locale
  @current_user_method = :current_user

  @application = nil

  @translator_options = {
    debug: false,
    debug_format_html: "<span style='font-size:20px;color:red;'>{</span> {$0} <span style='font-size:20px;color:red;'>}</span>",
    debug_format: '{{{{$0}}}}',
    split_sentences: false,
    nodes: {
        ignored:    [],
        scripts:    %w(style script),
        inline:     %w(a span i b img strong s em u sub sup),
        short:      %w(i b),
        splitters:  %w(br hr)
    },
    attributes: {
        labels:     %w(title alt)
    },
    name_mapping: {
        b:    'bold',
        i:    'italic',
        a:    'link',
        img:  'picture'
    },
    data_tokens: {
        special: false,
        numeric: false,
        numeric_name: 'num'
    }
  }

  @context_rules = {
    :number => {
      :variables => {
      }
    },
    :gender => {
      :variables => {
          '@gender' => 'gender',
      }
    },
    :genders => {
      :variables => {
        '@genders' => lambda{|list| list.collect do |u|
            u.is_a?(Hash) ? (u['gender'] || u[:gender]) : u.gender
        end
        },
        '@size' => lambda{ |list| list.size }
      }
    },
    :date => {
      :variables => {
      }
    },
    :time => {
      :variables => {
      }
    },
    :list => {
      :variables => {
        '@count' => lambda{|list| list.size}
      }
    },
  }

  @logger  = {
    :enabled  => false,
    :path     => './log/tr8n.log',
    :level    => 'debug'
  }

  @cache = {
    :enabled  => false,
    :host     => 'localhost:11211',
    :adapter  => 'memcache',
    :version  => 1,
    :timeout  => 3600
  }

  @default_tokens = {
    :html => {
      :data => {
        :ndash  =>  "&ndash;",       # –
        :mdash  =>  "&mdash;",       # —
        :iexcl  =>  "&iexcl;",       # ¡
        :iquest =>  "&iquest;",      # ¿
        :quot   =>  "&quot;",        # "
        :ldquo  =>  "&ldquo;",       # “
        :rdquo  =>  "&rdquo;",       # ”
        :lsquo  =>  "&lsquo;",       # ‘
        :rsquo  =>  "&rsquo;",       # ’
        :laquo  =>  "&laquo;",       # «
        :raquo  =>  "&raquo;",       # »
        :nbsp   =>  "&nbsp;",        # space
        :lsaquo =>  "&lsaquo;",      # ‹
        :rsaquo =>  "&rsaquo;",      # ›
        :br     =>  "<br/>",         # line break
        :lbrace =>  "{",
        :rbrace =>  "}",
        :trade  =>  "&trade;",       # TM
      },
      :decoration => {
        :strong =>  "<strong>{$0}</strong>",
        :bold   =>  "<strong>{$0}</strong>",
        :b      =>  "<strong>{$0}</strong>",
        :em     =>  "<em>{$0}</em>",
        :italic =>  "<i>{$0}</i>",
        :i      =>  "<i>{$0}</i>",
        :link   =>  "<a href='{$href}'>{$0}</a>",
        :br     =>  "<br>{$0}",
        :strike =>  "<strike>{$0}</strike>",
        :div    =>  "<div id='{$id}' class='{$class}' style='{$style}'>{$0}</div>",
        :span   =>  "<span id='{$id}' class='{$class}' style='{$style}'>{$0}</span>",
        :h1     =>  "<h1>{$0}</h1>",
        :h2     =>  "<h2>{$0}</h2>",
        :h3     =>  "<h3>{$0}</h3>",
      }
    },
    :text => {
      :data => {
        :ndash  =>  "–",
        :mdash  =>  "-",
        :iexcl  =>  "¡",
        :iquest =>  "¿",
        :quot   =>  '"',
        :ldquo  =>  "“",
        :rdquo  =>  "”",
        :lsquo  =>  "‘",
        :rsquo  =>  "’",
        :laquo  =>  "«",
        :raquo  =>  "»",
        :nbsp   =>  " ",
        :lsaquo =>  "‹",
        :rsaquo =>  "›",
        :br     =>  "\n",
        :lbrace =>  "{",
        :rbrace =>  "}",
        :trade  =>  "™",
      },
      :decoration => {
        :strong =>  "{$0}",
        :bold   =>  "{$0}",
        :b      =>  "{$0}",
        :em     =>  "{$0}",
        :italic =>  "{$0}",
        :i      =>  "{$0}",
        :link   =>  "{$0}:{$1}",
        :br     =>  "\n{$0}",
        :strike =>  "{$0}",
        :div    =>  "{$0}",
        :span   =>  "{$0}",
        :h1     =>  "{$0}",
        :h2     =>  "{$0}",
        :h3     =>  "{$0}",
      }
    }
  }

  @localization = {
    :default_day_names        =>  ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
    :default_abbr_day_names   =>  ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
    :default_month_names      =>  ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
    :default_abbr_month_names =>  ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
    :custom_date_formats      =>  {
      :default                => '%m/%d/%Y',            # 07/4/2008
      :short_numeric          => '%m/%d',               # 07/4
      :short_numeric_year     => '%m/%d/%y',            # 07/4/08
      :long_numeric           => '%m/%d/%Y',            # 07/4/2008
      :verbose                => '%A, %B %d, %Y',       # Friday, July  4, 2008
      :monthname              => '%B %d',               # July 4
      :monthname_year         => '%B %d, %Y',           # July 4, 2008
      :monthname_abbr         => '%b %d',               # Jul 4
      :monthname_abbr_year    => '%b %d, %Y',           # Jul 4, 2008
      :date_time              => '%m/%d/%Y at %H:%M',   # 01/03/1010 at 5:30
    },
    :token_mapping => {
      "%a" => "{short_week_day_name}",
      "%A" => "{week_day_name}",
      "%b" => "{short_month_name}",
      "%B" => "{month_name}",
      "%p" => "{am_pm}",
      "%d" => "{days}",
      "%e" => "{day_of_month}",
      "%j" => "{year_days}",
      "%m" => "{months}",
      "%W" => "{week_num}",
      "%w" => "{week_days}",
      "%y" => "{short_years}",
      "%Y" => "{years}",
      "%l" => "{trimed_hour}",
      "%H" => "{full_hours}",
      "%I" => "{short_hours}",
      "%M" => "{minutes}",
      "%S" => "{seconds}",
      "%s" => "{since_epoch}"
    }
  }
end

Public Instance Methods

cache_enabled?() click to toggle source
# File lib/tr8n/config.rb, line 317
def cache_enabled?
  cache[:enabled].nil? || Tr8n.config.cache[:enabled]
end
decorator_class() click to toggle source

Decorations

# File lib/tr8n/config.rb, line 350
def decorator_class
  return Tr8n::Decorators::Html if @format == :html
  Tr8n::Decorators::Default
end
default_abbr_day_name(index) click to toggle source
# File lib/tr8n/config.rb, line 385
def default_abbr_day_name(index)
  '' + default_abbr_day_names[index]
end
default_abbr_day_names() click to toggle source
# File lib/tr8n/config.rb, line 381
def default_abbr_day_names
  localization[:default_abbr_day_names]
end
default_abbr_month_name(index) click to toggle source
# File lib/tr8n/config.rb, line 401
def default_abbr_month_name(index)
  '' + default_abbr_month_names[index]
end
default_abbr_month_names() click to toggle source
# File lib/tr8n/config.rb, line 397
def default_abbr_month_names
  localization[:default_abbr_month_names]
end
default_application() click to toggle source
# File lib/tr8n/config.rb, line 342
def default_application
  @default_application ||= Tr8n::Application.new(:host => Tr8n::Api::Client::API_HOST)
end
default_date_formats() click to toggle source
# File lib/tr8n/config.rb, line 405
def default_date_formats
  localization[:custom_date_formats]
end
default_day_name(index) click to toggle source
# File lib/tr8n/config.rb, line 377
def default_day_name(index)
  "" + default_day_names[index]
end
default_day_names() click to toggle source
# File lib/tr8n/config.rb, line 373
def default_day_names
  localization[:default_day_names]
end
default_language() click to toggle source

def default_locale

return Tr8n.session.application.default_locale if Tr8n.session.application
@default_locale

end

def default_level

return Tr8n.session.application.default_level if Tr8n.session.application
@default_level

end

# File lib/tr8n/config.rb, line 335
def default_language
  @default_language ||= begin
    file = File.expand_path(File.join(File.dirname(__FILE__), '..', 'tr8n_core', 'languages', "#{Tr8n.config.default_locale}.json"))
    Tr8n::Language.new(JSON.parse(File.read(file)))
  end
end
default_month_name(index) click to toggle source
# File lib/tr8n/config.rb, line 393
def default_month_name(index)
  '' + default_month_names[index]
end
default_month_names() click to toggle source
# File lib/tr8n/config.rb, line 389
def default_month_names
  localization[:default_month_names]
end
default_token_value(token_name, type = :data, format = :html) click to toggle source
# File lib/tr8n/config.rb, line 355
def default_token_value(token_name, type = :data, format = :html)
  default_tokens[format.to_sym][type.to_sym][token_name.to_sym]
end
disabled?() click to toggle source
# File lib/tr8n/config.rb, line 300
def disabled?
  not enabled?
end
enabled?() click to toggle source
# File lib/tr8n/config.rb, line 296
def enabled?
  enabled
end
nested_value(hash, key, default_value = nil) click to toggle source
# File lib/tr8n/config.rb, line 304
def nested_value(hash, key, default_value = nil)
  parts = key.split('.')
  parts.each do |part|
    return default_value unless hash[part.to_sym]
    hash = hash[part.to_sym]
  end
  hash
end
set_default_token(token_name, value, type = :data, format = :html) click to toggle source
# File lib/tr8n/config.rb, line 359
def set_default_token(token_name, value, type = :data, format = :html)
  default_tokens[format.to_sym] ||= {}
  default_tokens[format.to_sym][type.to_sym] ||= {}
  default_tokens[format.to_sym][type.to_sym][token_name.to_sym] = value
end
strftime_symbol_to_token(symbol) click to toggle source

Localization

# File lib/tr8n/config.rb, line 369
def strftime_symbol_to_token(symbol)
  localization[:token_mapping][symbol]
end
translator_option(key) click to toggle source
# File lib/tr8n/config.rb, line 313
def translator_option(key)
  nested_value(self.translator_options, key)
end