require './_plugins/jekyll-topic-filter'
require 'jekyll'
module Gtn
module Hooks
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|
ordered_tool_ids = tutorials['tool_id']
.map{|x|
if x[0] == x[1]
[x[0], '0.0.0']
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]}
if tool.include?('/')
previous_id = tool.split('/')[0] + '/' + tool.split('/')[2]
else
previous_id = tool
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
site.pages << page2
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
end
end