Class: Jekyll::AwesomeNav::PageSet

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/jekyll/awesome_nav/page_set.rb

Instance Method Summary collapse

Constructor Details

#initialize(site, config) ⇒ PageSet

Returns a new instance of PageSet.



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/jekyll/awesome_nav/page_set.rb', line 8

def initialize(site, config)
  root_dir = config.root_dir
  include_patterns = config.include_patterns
  ignore_patterns = config.ignore_patterns
  @pages = site.pages.select do |page|
    source_path = Utils.source_path_for(page)

    next false if File.basename(page.path) == config.nav_filename
    next false unless included?(source_path, include_patterns)
    next false if ignored?(source_path, ignore_patterns)

    dir = Utils.source_dir_for(page)
    root_dir.empty? || dir == root_dir || dir.start_with?("#{root_dir}/")
  end
  @root_dir = root_dir
end

Instance Method Details

#each(&block) ⇒ Object



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

def each(&block)
  @pages.each(&block)
end

#empty?Boolean

Returns:

  • (Boolean)


29
30
31
# File 'lib/jekyll/awesome_nav/page_set.rb', line 29

def empty?
  @pages.empty?
end

#ignored?(source_path, patterns) ⇒ Boolean

Returns:

  • (Boolean)


37
38
39
40
41
# File 'lib/jekyll/awesome_nav/page_set.rb', line 37

def ignored?(source_path, patterns)
  patterns.any? do |pattern|
    File.fnmatch?(pattern, source_path, File::FNM_PATHNAME | File::FNM_DOTMATCH)
  end
end

#included?(source_path, patterns) ⇒ Boolean

Returns:

  • (Boolean)


43
44
45
46
47
48
49
# File 'lib/jekyll/awesome_nav/page_set.rb', line 43

def included?(source_path, patterns)
  return true if patterns.nil?

  patterns.any? do |pattern|
    File.fnmatch?(pattern, source_path, File::FNM_PATHNAME | File::FNM_DOTMATCH)
  end
end

#root_pageObject



33
34
35
# File 'lib/jekyll/awesome_nav/page_set.rb', line 33

def root_page
  @pages.find { |page| Utils.source_dir_for(page) == @root_dir && Utils.index_page?(page) }
end