class String
the meaning of the msgids using “named argument” instead of %s/%d style.
String#% method which accept “named argument”. The translator can know
Extension for String class. This feature is included in Ruby 1.9 or later but not occur TypeError.
def %(args)
"%
Example:
according to the formatting instruction appended to the closing >.
it will interpret the hash values as named arguments and format the value
When you pass a Hash as an argument and specify placeholders with %
* Using a Hash as an argument and formatted, named placeholders.
# => "Masao Mutoh"
"%{firstname}, %{lastname}" % {:firstname => "Masao", :lastname => "Mutoh"}
Example:
it will interpret the hash values as named arguments.
When you pass a Hash as an argument and specify placeholders with %{foo}
* Using a Hash as an argument and unformatted, named placeholders.
# => "1 message"
"%d %s" % [1, "message"]
Example:
more details about the format string.
This is the default behaviour of the String class. See Kernel#sprintf for
* Using a single argument or Array of arguments.
There are three ways to use it:
defines.
the given arguments to the string according to the formats the string
result of applying it to the given arguments. In other words it interpolates
% uses self (i.e. the String) as a format specification and returns the
def %(args) if args.kind_of?(Hash) dup.gsub(INTERPOLATION_PATTERN_WITH_ESCAPE) do |match| if match == '%%' '%' else key = ($1 || $2).to_sym raise KeyError unless args.has_key?(key) $3 ? sprintf("%#{$3}", args[key]) : args[key] end end elsif self =~ INTERPOLATION_PATTERN raise ArgumentError.new('one hash required') else result = gsub(/%([{<])/, '%%\1') result.send :'interpolate_without_ruby_19_syntax', args end end