Module URI::Escape
In: lib/uri/common.rb

Methods

decode   encode   escape   unescape  

Included Modules

REGEXP

Public Instance methods

decode(str)

Alias for unescape

encode(str, unsafe = UNSAFE)

Alias for escape

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=\11\15")
  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"

[Source]

     # File lib/uri/common.rb, line 284
284:     def escape(str, unsafe = UNSAFE)
285:       unless unsafe.kind_of?(Regexp)
286:         # perhaps unsafe is String object
287:         unsafe = Regexp.new("[#{Regexp.quote(unsafe)}]", false, 'N')
288:       end
289:       str.gsub(unsafe) do |us|
290:         tmp = ''
291:         us.each_byte do |uc|
292:           tmp << sprintf('%%%02X', uc)
293:         end
294:         tmp
295:       end
296:     end

Synopsis

  URI.unescape(str)

Args

str:Unescapes the string.

Usage

  require 'uri'

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

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

[Source]

     # File lib/uri/common.rb, line 319
319:     def unescape(str)
320:       str.gsub(ESCAPED) do
321:         $&[1,2].hex.chr
322:       end
323:     end

[Validate]