27 lines
		
	
	
		
			643 B
		
	
	
	
		
			Ruby
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			27 lines
		
	
	
		
			643 B
		
	
	
	
		
			Ruby
		
	
	
		
			Executable File
		
	
	
| #!/usr/bin/env ruby
 | |
| 
 | |
| require "benchmark/ips"
 | |
| 
 | |
| PATH = "/../../..../...//.....//lorem/ipsum//dolor///sit.xyz"
 | |
| 
 | |
| def sanitize_with_regex
 | |
|   "/" + PATH.gsub(%r!/{2,}!, "/").gsub(%r!\.+/|\A/+!, "")
 | |
| end
 | |
| 
 | |
| def sanitize_with_builtin
 | |
|   "/#{PATH}".gsub("..", "/").gsub("./", "").squeeze("/")
 | |
| end
 | |
| 
 | |
| if sanitize_with_regex == sanitize_with_builtin
 | |
|   Benchmark.ips do |x|
 | |
|     x.report("sanitize w/ regexes") { sanitize_with_regex }
 | |
|     x.report("sanitize w/ builtin") { sanitize_with_builtin }
 | |
|     x.compare!
 | |
|   end
 | |
| else
 | |
|   puts "w/ regexes: #{sanitize_with_regex}"
 | |
|   puts "w/ builtin: #{sanitize_with_builtin}"
 | |
|   puts ""
 | |
|   puts "Thank you. Do try again :("
 | |
| end
 |