Use select and find instead of conditional loop

This commit is contained in:
Pat Hawks 2016-01-03 15:24:18 -08:00
parent 0eae36aec2
commit 8223ebd861
No known key found for this signature in database
GPG Key ID: F1746FF5F18B3D1B
2 changed files with 19 additions and 25 deletions

View File

@ -51,12 +51,10 @@ module Jekyll
urls = {}
urls = collect_urls(urls, site.pages, site.dest)
urls = collect_urls(urls, site.posts.docs, site.dest)
urls.each do |url, paths|
if paths.size > 1
conflicting_urls = true
Jekyll.logger.warn "Conflict:", "The URL '#{url}' is the destination" \
" for the following pages: #{paths.join(", ")}"
end
urls.select { |_, p| p.size > 1 }.each do |url, paths|
conflicting_urls = true
Jekyll.logger.warn "Conflict:", "The URL '#{url}' is the destination" \
" for the following pages: #{paths.join(", ")}"
end
conflicting_urls
end
@ -80,13 +78,11 @@ module Jekyll
def urls_only_differ_by_case(site)
urls_only_differ_by_case = false
urls = case_insensitive_urls(site.pages + site.docs_to_write, site.dest)
urls.each do |case_insensitive_url, real_urls|
if real_urls.uniq.size > 1
urls_only_differ_by_case = true
Jekyll.logger.warn "Warning:", "The following URLs only differ" \
" by case. On a case-insensitive file system one of the URLs" \
" will be overwritten by the other: #{real_urls.join(", ")}"
end
urls.select { |_, p| p.size > 1 }.each do |_, real_urls|
urls_only_differ_by_case = true
Jekyll.logger.warn "Warning:", "The following URLs only differ" \
" by case. On a case-insensitive file system one of the URLs" \
" will be overwritten by the other: #{real_urls.join(", ")}"
end
urls_only_differ_by_case
end

View File

@ -59,23 +59,21 @@ eos
def render(context)
site = context.registers[:site]
site.posts.docs.each do |p|
if @post == p
return p.url
end
post = site.posts.docs.find { |p| @post == p }
if post
return post.url
end
# New matching method did not match, fall back to old method
# with deprecation warning if this matches
site.posts.docs.each do |p|
if @post.deprecated_equality p
Jekyll::Deprecator.deprecation_message "A call to '{{ post_url #{@post.name} }}' did not match " \
"a post using the new matching method of checking name " \
"(path-date-slug) equality. Please make sure that you " \
"change this tag to match the post's name exactly."
return p.url
end
post = site.posts.docs.find { |p| @post.deprecated_equality p }
if post
Jekyll::Deprecator.deprecation_message "A call to '{{ post_url #{@post.name} }}' did not match " \
"a post using the new matching method of checking name " \
"(path-date-slug) equality. Please make sure that you " \
"change this tag to match the post's name exactly."
return post.url
end
raise ArgumentError.new <<-eos