Class: Jekyll::AwesomeNav::NavResolver
- Inherits:
-
Object
- Object
- Jekyll::AwesomeNav::NavResolver
- Defined in:
- lib/jekyll/awesome_nav/nav_resolver.rb
Overview
This class centralizes override resolution, matching, and unmatched append behavior, so a narrow class-length suppression keeps the logic together. rubocop:disable Metrics/ClassLength
Defined Under Namespace
Classes: ResolutionContext
Instance Method Summary collapse
- #apply(items, current_dir = @root_dir, inherited_append_unmatched: false, inherited_sort_options: SortOptions.from(nil), inherited_ignore_patterns: []) ⇒ Object
-
#initialize(root_dir:, nav_map:, root_page: nil) ⇒ NavResolver
constructor
A new instance of NavResolver.
- #resolved_nav_dir(page_dir) ⇒ Object
Constructor Details
#initialize(root_dir:, nav_map:, root_page: nil) ⇒ NavResolver
Returns a new instance of NavResolver.
11 12 13 14 15 16 17 |
# File 'lib/jekyll/awesome_nav/nav_resolver.rb', line 11 def initialize(root_dir:, nav_map:, root_page: nil) @root_dir = root_dir @nav_map = nav_map @root_page = root_page @generated_by_dir = {} @generated_by_path = {} end |
Instance Method Details
#apply(items, current_dir = @root_dir, inherited_append_unmatched: false, inherited_sort_options: SortOptions.from(nil), inherited_ignore_patterns: []) ⇒ Object
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 44 45 |
# File 'lib/jekyll/awesome_nav/nav_resolver.rb', line 19 def apply( items, current_dir = @root_dir, inherited_append_unmatched: false, inherited_sort_options: SortOptions.from(nil), inherited_ignore_patterns: [] ) index_generated(items) generated_items = generated_children_for(current_dir, items) nav_file = @nav_map[current_dir] = nav_file&. || NavFileOptions.new override_items = nav_file&.items context = ResolutionContext.new( append_unmatched: .append_unmatched_or(inherited_append_unmatched), sort_options: .(), ignore_patterns: .ignore_patterns_or(inherited_ignore_patterns) ) return resolve_generated_items(generated_items, current_dir, context) unless override_items matched = {} resolved = (override_items, current_dir, generated_items, context, matched) return resolved.first.children if same_dir_wrapper?(resolved, current_dir) return resolved unless context.append_unmatched resolved + unmatched_items(generated_items, matched, context, current_dir) end |
#resolved_nav_dir(page_dir) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/jekyll/awesome_nav/nav_resolver.rb', line 47 def resolved_nav_dir(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 |