lib/jekyll/algolia/overwrites/jekyll-tags-link.rb
# frozen_string_literal: true # The default `link` tag allow to link to a specific page, using its relative # path. Because we might not be indexing the destination of the link, we might # not have the representation of the page in our data. If that happens, the # `link` tag fails. # # To fix that we'll overwrite the default `link` tag to loop over a backup copy # of the original files (before we clean it for indexing) # # https://github.com/algolia/jekyll-algolia/issues/62 class JekyllAlgoliaLink < Jekyll::Tags::Link def render(context) original_files = context.registers[:site].original_site_files original_files[:pages].each do |page| return page.url if page.relative_path == @relative_path end original_files[:collections].each_value do |collection| collection.docs.each do |item| return item.url if item.relative_path == @relative_path end end original_files[:static_files].each do |asset| return asset.url if asset.relative_path == @relative_path return asset.url if asset.relative_path == "/#{@relative_path}" end '/' end end