jekyll-readme-index-0.3.0/0000755000004100000410000000000013562061276015404 5ustar www-datawww-datajekyll-readme-index-0.3.0/jekyll-readme-index.gemspec0000644000004100000410000000444613562061276022613 0ustar www-datawww-data######################################################### # This file has been automatically generated by gem2tgz # ######################################################### # -*- encoding: utf-8 -*- # stub: jekyll-readme-index 0.3.0 ruby lib Gem::Specification.new do |s| s.name = "jekyll-readme-index".freeze s.version = "0.3.0" s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= s.require_paths = ["lib".freeze] s.authors = ["Ben Balter".freeze] s.date = "2019-11-05" s.email = ["ben.balter@github.com".freeze] s.files = ["lib/jekyll-readme-index.rb".freeze, "lib/jekyll-readme-index/generator.rb".freeze, "lib/jekyll-readme-index/version.rb".freeze, "lib/jekyll/static_file_ext.rb".freeze] s.homepage = "https://github.com/benbalter/jekyll-readme-index".freeze s.licenses = ["MIT".freeze] s.rubygems_version = "2.5.2.1".freeze s.summary = "A Jekyll plugin to render a project's README as the site's index.".freeze if s.respond_to? :specification_version then s.specification_version = 4 if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then s.add_runtime_dependency(%q.freeze, ["< 5.0", ">= 3.0"]) s.add_development_dependency(%q.freeze, ["~> 3.5"]) s.add_development_dependency(%q.freeze, ["~> 0.40"]) s.add_development_dependency(%q.freeze, ["~> 0.10.0"]) s.add_development_dependency(%q.freeze, ["~> 1.5"]) s.add_development_dependency(%q.freeze, ["~> 1.3"]) else s.add_dependency(%q.freeze, ["< 5.0", ">= 3.0"]) s.add_dependency(%q.freeze, ["~> 3.5"]) s.add_dependency(%q.freeze, ["~> 0.40"]) s.add_dependency(%q.freeze, ["~> 0.10.0"]) s.add_dependency(%q.freeze, ["~> 1.5"]) s.add_dependency(%q.freeze, ["~> 1.3"]) end else s.add_dependency(%q.freeze, ["< 5.0", ">= 3.0"]) s.add_dependency(%q.freeze, ["~> 3.5"]) s.add_dependency(%q.freeze, ["~> 0.40"]) s.add_dependency(%q.freeze, ["~> 0.10.0"]) s.add_dependency(%q.freeze, ["~> 1.5"]) s.add_dependency(%q.freeze, ["~> 1.3"]) end end jekyll-readme-index-0.3.0/lib/0000755000004100000410000000000013562061276016152 5ustar www-datawww-datajekyll-readme-index-0.3.0/lib/jekyll-readme-index.rb0000644000004100000410000000024213562061276022327 0ustar www-datawww-data# frozen_string_literal: true require "jekyll" require "jekyll-readme-index/generator" require_relative "./jekyll/static_file_ext" module JekyllReadmeIndex end jekyll-readme-index-0.3.0/lib/jekyll/0000755000004100000410000000000013562061276017444 5ustar www-datawww-datajekyll-readme-index-0.3.0/lib/jekyll/static_file_ext.rb0000644000004100000410000000100113562061276023127 0ustar www-datawww-data# frozen_string_literal: true module Jekyll class StaticFile # Convert this static file to a Page def to_page page = Jekyll::Page.new(@site, @base, @dir, @name) page.data["permalink"] = File.dirname(url) + "/" page end end class Page def update_permalink data["permalink"] = File.dirname(url) + "/" @url = URL.new( :template => template, :placeholders => url_placeholders, :permalink => permalink ).to_s end end end jekyll-readme-index-0.3.0/lib/jekyll-readme-index/0000755000004100000410000000000013562061276022004 5ustar www-datawww-datajekyll-readme-index-0.3.0/lib/jekyll-readme-index/version.rb0000644000004100000410000000012013562061276024007 0ustar www-datawww-data# frozen_string_literal: true module JekyllReadmeIndex VERSION = "0.3.0" end jekyll-readme-index-0.3.0/lib/jekyll-readme-index/generator.rb0000644000004100000410000000437013562061276024323 0ustar www-datawww-data# frozen_string_literal: true module JekyllReadmeIndex class Generator < Jekyll::Generator INDEX_REGEX = %r!$|index\.(html?|xhtml|xml)$!i.freeze attr_accessor :site safe true priority :low CONFIG_KEY = "readme_index" ENABLED_KEY = "enabled" CLEANUP_KEY = "remove_originals" FRONTMATTER_KEY = "with_frontmatter" def initialize(site) @site = site end 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 # Returns an array of all READMEs as StaticFiles def readmes site.static_files.select { |file| file.relative_path =~ readme_regex } end def readmes_with_frontmatter site.pages.select { |file| ("/" + file.path) =~ readme_regex } end # Should the given readme be the containing directory's index? def should_be_index?(readme) return false unless readme !dir_has_index? File.dirname(readme.url) end # Does the given directory have an index? # # relative_path - the directory path relative to the site root 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 # Regexp to match a file path against to detect if the given file is a README def readme_regex @readme_regex ||= %r!/readme(#{Regexp.union(markdown_converter.extname_list)})$!i end def markdown_converter @markdown_converter ||= site.find_converter_instance(Jekyll::Converters::Markdown) end def option(key) site.config[CONFIG_KEY] && site.config[CONFIG_KEY][key] end def disabled? option(ENABLED_KEY) == false end def cleanup? option(CLEANUP_KEY) == true end def with_frontmatter? option(FRONTMATTER_KEY) == true end end end