Refactor ExtractsRef#extracts_ref to be more readable
Great suggestion from @allison.browne in !38343 (comment 390022564):
def extract_ref(id)
pair = extract_raw_ref(id)
[
pair[0].strip,
# Remove ending slashes from path
pair[1].gsub(%r{^/|/$}, '')
]
end
def extract_raw_ref(id)
return ['', ''] unless repository_container
return $~.captures if id =~ /^(\h{40})(.+)/
return [id, ''] unless id.include?('/')
id = [id, '/'].join unless id.ends_with?('/')
valid_refs = ref_names.select { |v| id.start_with?("#{v}/") }
return id.match(%r{([^/]+)(.*)}).captures if valid_refs.empty?
best_match = valid_refs.max_by(&:length)
id.partition(best_match)[1..-1]
end