class Tr8n::Tokens::DecorationToken

Public Class Methods

expression() click to toggle source
# File lib/tr8n/tokens/decoration_token.rb, line 41
def self.expression
  /(\[\w+:[^\]]+\])/
end

Public Instance Methods

decoration?() click to toggle source
# File lib/tr8n/tokens/decoration_token.rb, line 45
def decoration?
  true
end
handle_default_decorations(token_name, token_value, token_values) click to toggle source
# File lib/tr8n/tokens/decoration_token.rb, line 71
def handle_default_decorations(token_name, token_value, token_values)
  unless Tr8n::Config.default_decoration_tokens[token_name]
    raise Tr8n::TokenException.new("Invalid decoration token value")
  end
    
  default_decoration = Tr8n::Config.default_decoration_tokens[token_name].clone
  decoration_token_values = token_values[token_name.to_sym] || []
  
  if decoration_token_values.is_a?(Array)
    params = [token_value, decoration_token_values].flatten
    params.each_with_index do |param, index|
      default_decoration.gsub!("{$#{index}}", param.to_s)
    end

    # clean all the rest of the {$num} params, if any
    param_index = params.size
    while default_decoration.index("{$#{param_index}}")
      default_decoration.gsub!("{$#{param_index}}", "")
      param_index += 1
    end
  elsif decoration_token_values.is_a?(Hash)
    default_decoration.gsub!("{$0}", token_value.to_s)
    decoration_token_values.keys.each do |key|
      default_decoration.gsub!("{$#{key}}", decoration_token_values[key])
    end
  end
  
  default_decoration
end
language_rule() click to toggle source
# File lib/tr8n/tokens/decoration_token.rb, line 49
def language_rule
  nil
end
prepare_label_for_suggestion(label, index) click to toggle source

return only the internal part

# File lib/tr8n/tokens/decoration_token.rb, line 67
def prepare_label_for_suggestion(label, index)
  label.gsub(name, "(#{index})")
end
prepare_label_for_translator(label) click to toggle source

return as is

# File lib/tr8n/tokens/decoration_token.rb, line 62
def prepare_label_for_translator(label)
  label
end
sanitized_name() click to toggle source
# File lib/tr8n/tokens/decoration_token.rb, line 124
def sanitized_name
  "[#{name}: ]"
end
substitute(label, values = {}, options = {}, language = Tr8n::Config.current_language) click to toggle source
# File lib/tr8n/tokens/decoration_token.rb, line 101
def substitute(label, values = {}, options = {}, language = Tr8n::Config.current_language)
  method = values[name_key]
  substitution_value = ""
  
  if method
    if method.is_a?(Proc)
      substitution_value = method.call(value)
    elsif method.is_a?(Array) or method.is_a?(Hash)
      substitution_value = handle_default_decorations(name, value, values)
    elsif method.is_a?(String)
      substitution_value = method.to_s.gsub("{$0}", value)
    else
      raise Tr8n::TokenException.new("Invalid decoration token value")
    end
  elsif Tr8n::Config.default_decoration_tokens[name]
    substitution_value = handle_default_decorations(name, value, values)
  else
    raise Tr8n::TokenException.new("Missing decoration token value")
  end
    
  label.gsub(full_name, substitution_value) 
end
value() click to toggle source
# File lib/tr8n/tokens/decoration_token.rb, line 53
def value
  @value ||= begin
    parts = full_name.gsub(/[\]]/, '').split(':')
    vl = parts[1..-1].join(':')
    vl.strip
  end
end