def web_path target, start = nil
target = posixify target
start = posixify start
uri_prefix = nil
unless start.nil_or_empty? || (is_web_root? target)
target = (start.end_with? SLASH) ? %(#{start}#{target}) : %(#{start}#{SLASH}#{target})
if (uri_prefix = Helpers.uri_prefix target)
target = target[uri_prefix.length..-1]
end
end
target_segments, target_root, _ = partition_path target, true
resolved_segments = []
target_segments.each do |segment|
if segment == DOT_DOT
if resolved_segments.empty?
resolved_segments << segment unless target_root && target_root != DOT_SLASH
elsif resolved_segments[-1] == DOT_DOT
resolved_segments << segment
else
resolved_segments.pop
end
else
resolved_segments << segment
end
end
if (resolved_path = join_path resolved_segments, target_root).include? ' '
resolved_path = resolved_path.gsub ' ', '%20'
end
uri_prefix ? %(
end