In Files

  • uri/common.rb

Included Modules

URI::Escape

Public Instance Methods

decode(str) click to toggle source
Alias for: unescape
encode(str, unsafe = UNSAFE) click to toggle source
Alias for: escape
escape(str, unsafe = UNSAFE) click to toggle source

Synopsis

URI.escape(str [, unsafe])

Args

str

String to replaces in.

unsafe

Regexp that matches all symbols that must be replaced with codes. By default uses REGEXP::UNSAFE. When this argument is a String, it represents a character set.

Description

Escapes the string, replacing all unsafe characters with codes.

Usage

require 'uri'

enc_uri = URI.escape("http://example.com/?a=\111\\115"")
p enc_uri
# => "http://example.com/?a=%09%0D"

p URI.unescape(enc_uri)
# => "http://example.com/?a=\t\r"

p URI.escape("@?@!", "!?")
# => "@%3F@%21"
 
               # File uri/common.rb, line 284
def escape(str, unsafe = UNSAFE)
  unless unsafe.kind_of?(Regexp)
    # perhaps unsafe is String object
    unsafe = Regexp.new("[#{Regexp.quote(unsafe)}]", false, 'N')
  end
  str.gsub(unsafe) do |us|
    tmp = ''
    us.each_byte do |uc|
      tmp << sprintf('%%%02X', uc)
    end
    tmp
  end
end
            
Also aliased as: encode
unescape(str) click to toggle source

Synopsis

URI.unescape(str)

Args

str

Unescapes the string.

Usage

require 'uri'

enc_uri = URI.escape("http://example.com/?a=\111\\115"")
p enc_uri
# => "http://example.com/?a=%09%0D"

p URI.unescape(enc_uri)
# => "http://example.com/?a=\t\r"
 
               # File uri/common.rb, line 319
def unescape(str)
  str.gsub(ESCAPED) do
    $&[1,2].hex.chr
  end
end
            
Also aliased as: decode