Class: Jekyll::AwesomeNav::NavigationResult

Inherits:
Object
  • Object
show all
Defined in:
lib/jekyll/awesome_nav/navigation_result.rb

Instance Method Summary collapse

Constructor Details

#initialize(tree:, root_dir:, root_page:, nav_map:) ⇒ NavigationResult

Returns a new instance of NavigationResult.



6
7
8
9
10
11
# File 'lib/jekyll/awesome_nav/navigation_result.rb', line 6

def initialize(tree:, root_dir:, root_page:, nav_map:)
  @tree = tree
  @root_dir = root_dir
  @root_page = root_page
  @nav_map = nav_map
end

Instance Method Details



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/jekyll/awesome_nav/navigation_result.rb', line 43

def breadcrumbs_for(page)
  page_url = Utils.normalize_url(page.url)
  trail = find_trail(serialized_tree, page_url)
  return root_breadcrumb(page) if trail.nil? && Utils.source_dir_for(page) == @root_dir && Utils.index_page?(page)
  return [] unless trail

  breadcrumbs = trail.filter_map do |item|
    next if item["title"].to_s.empty?

    crumb = { "title" => item["title"] }
    crumb["url"] = item["url"] if item["url"]
    crumb
  end

  prepend_root_breadcrumb(breadcrumbs)
end

#local_nav_for(page_dir) ⇒ Object



25
26
27
# File 'lib/jekyll/awesome_nav/navigation_result.rb', line 25

def local_nav_for(page_dir)
  serialized_local_nav_map.fetch(page_dir, [])
end


29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/jekyll/awesome_nav/navigation_result.rb', line 29

def nav_dir_for(page_dir)
  current = page_dir

  loop do
    return current if @nav_map.key?(current)
    return @root_dir if current == @root_dir
    break if current.empty?

    current = Utils.parent_dir(current)
  end

  @root_dir
end

#nav_entry_for(page_url) ⇒ Object



60
61
62
# File 'lib/jekyll/awesome_nav/navigation_result.rb', line 60

def nav_entry_for(page_url)
  neighbor_map[page_url]
end

#serialized_local_nav_mapObject



17
18
19
# File 'lib/jekyll/awesome_nav/navigation_result.rb', line 17

def serialized_local_nav_map
  @serialized_local_nav_map ||= Serializer.serialize_map(local_nav_nodes)
end

#serialized_nav_filesObject



21
22
23
# File 'lib/jekyll/awesome_nav/navigation_result.rb', line 21

def serialized_nav_files
  @serialized_nav_files ||= Serializer.serialize_map(@nav_map)
end

#serialized_treeObject



13
14
15
# File 'lib/jekyll/awesome_nav/navigation_result.rb', line 13

def serialized_tree
  @serialized_tree ||= Serializer.serialize_tree(@tree)
end