Method: ActionController::Routing.normalize_paths
- Defined in:
- lib/action_controller/routing.rb
.normalize_paths(paths) ⇒ Object
Returns an array of paths, cleaned of double-slashes and relative path references.
-
“\" and ”//“ become ”\“ or ”/“.
-
“/foo/bar/../config” becomes “/foo/config”.
The returned array is sorted by length, descending.
302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 |
# File 'lib/action_controller/routing.rb', line 302 def normalize_paths(paths) # do the hokey-pokey of path normalization... paths = paths.collect do |path| path = path. gsub("//", "/"). # replace double / chars with a single gsub("\\\\", "\\"). # replace double \ chars with a single gsub(%r{(.)[\\/]$}, '\1') # drop final / or \ if path ends with it # eliminate .. paths where possible re = %r{[^/\\]+[/\\]\.\.[/\\]} path.gsub!(re, "") while path.match(re) path end # start with longest path, first paths = paths.uniq.sort_by { |path| - path.length } end |