module Gtn::Hooks
Parse the git repo to get some facts
Public Class Methods
Generate the by-tool pages Params:
site
-
Jekyll
site object
# File _plugins/gtn/hooks.rb, line 13 def self.by_tool(site) Jekyll.logger.debug "[GTN/Hooks/by_tool] Started" init_count = site.pages.size start_time = Time.now tools = Gtn::TopicFilter.list_materials_by_tool(site) tools.reject!{|tool, _| tool.include?('{{')} tools.each do |tool, tutorials| # tool: e.g. `saskia-hiltemann/krona_text/krona-text` ordered_tool_ids = tutorials['tool_id'] .map{|x| if x[0] == x[1] # TODO: collect versions of builtins. [x[0], '0.0.0'] # Fake version for local only tools else x end } .reject{|x| x[0] == x[1]} .map{|x| [x[0], x[1], Gem::Version.new(fix_version(x[1]))]} .sort_by{|x| x[2]} # Redirect from the older, shorter IDs that have more potential for conflicts. if tool.include?('/') previous_id = tool.split('/')[0] + '/' + tool.split('/')[2] else previous_id = tool # No change end page2 = Jekyll::PageWithoutAFile.new(site, '', 'by-tool/', "#{tool.gsub('%20', ' ')}.html") page2.content = nil page2.data['layout'] = 'by_tool' page2.data['short_tool'] = tool page2.data['observed_tool_ids'] = ordered_tool_ids.map{|x| x[0..1]}.reverse page2.data['tutorial_list'] = tutorials['tutorials'] page2.data['latest_tool_id'] = ordered_tool_ids.map{|x| x[0]}.last # page2.data['redirect_from'] = ["/by-tool/#{previous_id.gsub('%20', ' ')}"] site.pages << page2 # TODO: For whatever reason the redirect_from does NOT work, even this # early in the hooks, so we're just going to write the file and call it # a day. Someone should fix this someday. My apologies for leaving it like this. if previous_id != tool page2 = Jekyll::PageWithoutAFile.new(site, '', 'by-tool/', "#{previous_id}.html") page2.content = nil page2.data['layout'] = 'by_tool' page2.data['short_tool'] = tool page2.data['observed_tool_ids'] = ordered_tool_ids.map{|x| x[0..1]}.reverse page2.data['tutorial_list'] = tutorials['tutorials'] page2.data['latest_tool_id'] = ordered_tool_ids.map{|x| x[0]}.last site.pages << page2 end end Jekyll.logger.info "[GTN/Hooks/by_tool] #{site.pages.size - init_count} pages added in #{Time.now - start_time}s" end