instance method %

Ruby on Rails 2.3.18

Since v2.3.18 Last seen in v2.3.18

Signature

%(args)

% uses self (i.e. the String) as a format specification and returns the result of applying it to the given arguments. In other words it interpolates the given arguments to the string according to the formats the string defines.

There are three ways to use it:

  • Using a single argument or Array of arguments.

    This is the default behaviour of the String class. See Kernel#sprintf for more details about the format string.

    Example:

    "%d %s" % [1, "message"]
    # => "1 message"
    
  • Using a Hash as an argument and unformatted, named placeholders.

    When you pass a Hash as an argument and specify placeholders with %{foo} it will interpret the hash values as named arguments.

    Example:

    "%{firstname}, %{lastname}" % {:firstname => "Masao", :lastname => "Mutoh"}
    # => "Masao Mutoh"
    
  • Using a Hash as an argument and formatted, named placeholders.

    When you pass a Hash as an argument and specify placeholders with %<foo>d it will interpret the hash values as named arguments and format the value according to the formatting instruction appended to the closing >.

    Example:

    "%<integer>d, %<float>.1f" % { :integer => 10, :float => 43.4 }
    # => "10, 43.3"
    

Parameters

args req
Source
# File activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/core_ext/string/interpolate.rb, line 79
    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

Defined in activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/core_ext/string/interpolate.rb line 79 · View on GitHub · Improve this page · Find usages on GitHub

Defined in String

Type at least 2 characters to search.

↑↓ navigate · open · esc close