Class: String
- Inherits:
-
Object
- Object
- String
- Defined in:
- lib/gettext/core_ext/string.rb
Overview
Extension for String class. This feature is included in Ruby 1.9 or later but not occur TypeError.
String#% method which accept “named argument”. The translator can know the meaning of the msgids using “named argument” instead of %s/%d style.
Constant Summary collapse
- PERCENT_MATCH_RE =
Regexp.union( /%%/, /%\{(.+?)\}/, /%<(.+?)>(.*?\d*\.?\d*[bBdiouxXeEfgGcps])/ )
Instance Method Summary collapse
-
#%(args) ⇒ Object
call-seq: %(arg) %(hash).
-
#_old_format_m ⇒ Object
:nodoc:.
Instance Method Details
#%(args) ⇒ Object
call-seq:
%(arg)
%(hash)
Format - Uses str as a format specification, and returns the result of applying it to arg. If the format specification contains more than one substitution, then arg must be an Array containing the values to be substituted. See Kernel::sprintf for details of the format string. This is the default behavior of the String class.
-
arg: an Array or other class except Hash.
-
Returns: formatted String
(e.g.) "%s, %s" % ["Masao", "Mutoh"]
Also you can use a Hash as the “named argument”. This is recommanded way for Ruby-GetText because the translators can understand the meanings of the msgids easily.
-
hash: {:key1 => value1, :key2 => value2, … }
-
Returns: formatted String
(e.g.)
For strings.
"%{firstname}, %{familyname}" % {:firstname => "Masao", :familyname => "Mutoh"}
With field type to specify format such as d(decimal), f(float),...
"%<age>d, %<weight>.1f" % {:age => 10, :weight => 43.4}
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/gettext/core_ext/string.rb', line 53 def %(args) if args.kind_of?(Hash) ret = dup ret.gsub!(PERCENT_MATCH_RE) {|match| if match == '%%' '%' elsif $1 key = $1.to_sym args.has_key?(key) ? args[key] : match elsif $2 key = $2.to_sym args.has_key?(key) ? sprintf("%#{$3}", args[key]) : match end } ret else ret = gsub(/%([{<])/, '%%\1') begin ret._old_format_m(args) rescue ArgumentError => e if $DEBUG $stderr.puts " The string:#{ret}" $stderr.puts " args:#{args.inspect}" puts e.backtrace else raise ArgumentError, e. end end end end |
#_old_format_m ⇒ Object
:nodoc:
21 |
# File 'lib/gettext/core_ext/string.rb', line 21 alias :_old_format_m :% |