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
Class Method Details
.escape_fragment(fragment) ⇒ Object
85 86 87 |
# File 'lib/action_dispatch/journey/router/utils.rb', line 85 def self.escape_fragment(fragment) ENCODER.escape_fragment(fragment.to_s) end |
.escape_path(path) ⇒ Object
77 78 79 |
# File 'lib/action_dispatch/journey/router/utils.rb', line 77 def self.escape_path(path) ENCODER.escape_path(path.to_s) end |
.escape_segment(segment) ⇒ Object
81 82 83 |
# File 'lib/action_dispatch/journey/router/utils.rb', line 81 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"
15 16 17 18 19 20 21 22 23 24 |
# File 'lib/action_dispatch/journey/router/utils.rb', line 15 def self.normalize_path(path) encoding = path.encoding path = "/#{path}" path.squeeze!("/".freeze) path.sub!(%r{/+\Z}, "".freeze) path.gsub!(/(%[a-f0-9]{2})/) { $1.upcase } path = "/" if path == "".freeze path.force_encoding(encoding) path end |
.unescape_uri(uri) ⇒ Object
89 90 91 |
# File 'lib/action_dispatch/journey/router/utils.rb', line 89 def self.unescape_uri(uri) ENCODER.unescape_uri(uri) end |