11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
# File 'lib/jekyll/awesome_nav/generator.rb', line 11
def generate(site)
config = Config.new(site.config["awesome_nav"])
return unless config.enabled?
pages = PageSet.new(site, config)
return if pages.empty?
tree = TreeBuilder.new(pages: pages, root_dir: config.root_dir).build
nav_map = NavFileLoader.new(site: site, config: config).load
resolved_tree = NavResolver.new(root_dir: config.root_dir, nav_map: nav_map).apply(tree, config.root_dir)
result = NavigationResult.new(
tree: resolved_tree,
root_dir: config.root_dir,
root_page: pages.root_page,
nav_map: nav_map
)
pages.each do |page|
page_dir = Utils.source_dir_for(page)
nav_dir = result.nav_dir_for(page_dir)
page_url = Utils.normalize_url(page.url)
page.data["awesome_nav"] = deep_copy(result.serialized_tree)
page.data["awesome_nav_local"] = deep_copy(result.local_nav_for(nav_dir))
page.data["awesome_nav_dir"] = nav_dir
page.data["breadcrumbs"] = result.breadcrumbs_for(page)
page.data["awesome_nav_previous"] = deep_copy(result.nav_entry_for(page_url)&.fetch("previous", nil))
page.data["awesome_nav_next"] = deep_copy(result.nav_entry_for(page_url)&.fetch("next", nil))
end
site.config["awesome_nav_tree"] = deep_copy(result.serialized_tree)
site.config["awesome_nav_local_map"] = deep_copy(result.serialized_local_nav_map)
site.config["awesome_nav_files"] = deep_copy(result.serialized_nav_files)
end
|