class JekyllReadmeIndex::Generator

Constants

CLEANUP_KEY
CONFIG_KEY
ENABLED_KEY
FRONTMATTER_KEY
INDEX_REGEX

Attributes

site[RW]

Public Class Methods

new(site) click to toggle source
# File lib/jekyll-readme-index/generator.rb, line 17
def initialize(site)
  @site = site
end

Public Instance Methods

generate(site) click to toggle source
# File lib/jekyll-readme-index/generator.rb, line 21
def generate(site)
  @site = site
  return if disabled?

  readmes.each do |readme|
    next unless should_be_index?(readme)

    site.pages << readme.to_page
    site.static_files.delete(readme) if cleanup?
  end

  if with_frontmatter?
    readmes_with_frontmatter.each do |readme|
      next unless should_be_index?(readme)

      readme.update_permalink
    end
  end
end

Private Instance Methods

cleanup?() click to toggle source
# File lib/jekyll-readme-index/generator.rb, line 85
def cleanup?
  option(CLEANUP_KEY) == true
end
dir_has_index?(relative_path) click to toggle source

Does the given directory have an index?

relative_path - the directory path relative to the site root

# File lib/jekyll-readme-index/generator.rb, line 62
def dir_has_index?(relative_path)
  relative_path << "/" unless relative_path.end_with? "/"
  regex = %r!^#{Regexp.escape(relative_path)}#{INDEX_REGEX}!i
  (site.pages + site.static_files).any? { |file| file.url =~ regex }
end
disabled?() click to toggle source
# File lib/jekyll-readme-index/generator.rb, line 81
def disabled?
  option(ENABLED_KEY) == false
end
markdown_converter() click to toggle source
# File lib/jekyll-readme-index/generator.rb, line 73
def markdown_converter
  @markdown_converter ||= site.find_converter_instance(Jekyll::Converters::Markdown)
end
option(key) click to toggle source
# File lib/jekyll-readme-index/generator.rb, line 77
def option(key)
  site.config[CONFIG_KEY] && site.config[CONFIG_KEY][key]
end
readme_regex() click to toggle source

Regexp to match a file path against to detect if the given file is a README

# File lib/jekyll-readme-index/generator.rb, line 69
def readme_regex
  @readme_regex ||= %r!/readme(#{Regexp.union(markdown_converter.extname_list)})$!i
end
readmes() click to toggle source

Returns an array of all READMEs as StaticFiles

# File lib/jekyll-readme-index/generator.rb, line 44
def readmes
  site.static_files.select { |file| file.relative_path =~ readme_regex }
end
readmes_with_frontmatter() click to toggle source
# File lib/jekyll-readme-index/generator.rb, line 48
def readmes_with_frontmatter
  site.pages.select { |file| ("/" + file.path) =~ readme_regex }
end
should_be_index?(readme) click to toggle source

Should the given readme be the containing directory's index?

# File lib/jekyll-readme-index/generator.rb, line 53
def should_be_index?(readme)
  return false unless readme

  !dir_has_index? File.dirname(readme.url)
end
with_frontmatter?() click to toggle source
# File lib/jekyll-readme-index/generator.rb, line 89
def with_frontmatter?
  option(FRONTMATTER_KEY) == true
end