# File lib/i18n/backend/interpolation_compiler.rb, line 25 def compile_if_an_interpolation(string) if interpolated_str?(string) string.instance_eval def i18n_interpolate(v = {}) "#{compiled_interpolation_body(string)}" end, __FILE__, __LINE__ end string end
# File lib/i18n/backend/interpolation_compiler.rb, line 58 def compile_interpolation_token(key) "\#{#{interpolate_or_raise_missing(key)}}" end
# File lib/i18n/backend/interpolation_compiler.rb, line 47 def compiled_interpolation_body(str) tokenize(str).map do |token| (matchdata = token.match(INTERPOLATION_SYNTAX_PATTERN)) ? handle_interpolation_token(token, matchdata) : escape_plain_str(token) end.join end
# File lib/i18n/backend/interpolation_compiler.rb, line 71 def direct_key(key) "((t = v[#{key}]) && t.respond_to?(:call) ? t.call : t)" end
# File lib/i18n/backend/interpolation_compiler.rb, line 91 def escape_key_sym(key) # rely on Ruby to do all the hard work :) key.to_sym.inspect end
# File lib/i18n/backend/interpolation_compiler.rb, line 87 def escape_plain_str(str) str.gsub(/"|\\|#/) {|x| "\\#{x}"} end
# File lib/i18n/backend/interpolation_compiler.rb, line 53 def handle_interpolation_token(interpolation, matchdata) escaped, pattern, key = matchdata.values_at(1, 2, 3) escaped ? pattern : compile_interpolation_token(key.to_sym) end
# File lib/i18n/backend/interpolation_compiler.rb, line 67 def interpolate_key(key) [direct_key(key), nil_key(key), missing_key(key)].join('||') end
# File lib/i18n/backend/interpolation_compiler.rb, line 62 def interpolate_or_raise_missing(key) escaped_key = escape_key_sym(key) RESERVED_KEYS.include?(key) ? reserved_key(escaped_key) : interpolate_key(escaped_key) end
# File lib/i18n/backend/interpolation_compiler.rb, line 79 def missing_key(key) "raise(MissingInterpolationArgument.new(#{key}, self))" end
# File lib/i18n/backend/interpolation_compiler.rb, line 75 def nil_key(key) "(v.has_key?(#{key}) && '')" end
Generated with the Darkfish Rdoc Generator 2.