def web_path target, start = nil
target = posixfy target
start = posixfy start
uri_prefix = nil
unless start.nil_or_empty? || (is_web_root? target)
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 uri_prefix
%(#{uri_prefix}#{join_path resolved_segments, target_root})
else
join_path resolved_segments, target_root
end
end