Class: ActionDispatch::Journey::Router::Utils
- Inherits:
 - 
      Object
      
        
- Object
 - ActionDispatch::Journey::Router::Utils
 
 
- Defined in:
 - lib/action_dispatch/journey/router/utils.rb
 
Overview
:nodoc:
Defined Under Namespace
Classes: UriEncoder
Constant Summary collapse
- ENCODER =
 UriEncoder.new
Class Method Summary collapse
- .escape_fragment(fragment) ⇒ Object
 - .escape_path(path) ⇒ Object
 - .escape_segment(segment) ⇒ Object
 - 
  
    
      .normalize_path(path)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Normalizes URI path.
 - 
  
    
      .unescape_uri(uri)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Replaces any escaped sequences with their unescaped representations.
 
Class Method Details
.escape_fragment(fragment) ⇒ Object
      88 89 90  | 
    
      # File 'lib/action_dispatch/journey/router/utils.rb', line 88 def self.escape_fragment(fragment) ENCODER.escape_fragment(fragment.to_s) end  | 
  
.escape_path(path) ⇒ Object
      80 81 82  | 
    
      # File 'lib/action_dispatch/journey/router/utils.rb', line 80 def self.escape_path(path) ENCODER.escape_path(path.to_s) end  | 
  
.escape_segment(segment) ⇒ Object
      84 85 86  | 
    
      # File 'lib/action_dispatch/journey/router/utils.rb', line 84 def self.escape_segment(segment) ENCODER.escape_segment(segment.to_s) end  | 
  
.normalize_path(path) ⇒ Object
Normalizes URI path.
Strips off trailing slash and ensures there is a leading slash. Also converts downcase URL encoded string to uppercase.
normalize_path("/foo")  # => "/foo"
normalize_path("/foo/") # => "/foo"
normalize_path("foo")   # => "/foo"
normalize_path("")      # => "/"
normalize_path("/%ab")  # => "/%AB"
  
      17 18 19 20 21 22 23 24 25 26 27  | 
    
      # File 'lib/action_dispatch/journey/router/utils.rb', line 17 def self.normalize_path(path) path ||= "" encoding = path.encoding path = "/#{path}".dup path.squeeze!("/".freeze) path.sub!(%r{/+\Z}, "".freeze) path.gsub!(/(%[a-f0-9]{2})/) { $1.upcase } path = "/".dup if path == "".freeze path.force_encoding(encoding) path end  | 
  
.unescape_uri(uri) ⇒ Object
Replaces any escaped sequences with their unescaped representations.
uri = "/topics?title=Ruby%20on%20Rails"
unescape_uri(uri)  #=> "/topics?title=Ruby on Rails"
  
      96 97 98  | 
    
      # File 'lib/action_dispatch/journey/router/utils.rb', line 96 def self.unescape_uri(uri) ENCODER.unescape_uri(uri) end  |