jekyll-default-layout-0.1.4/0000755000004100000410000000000013514677667016021 5ustar www-datawww-datajekyll-default-layout-0.1.4/jekyll-default-layout.gemspec0000644000004100000410000000320513514677667023615 0ustar www-datawww-data######################################################### # This file has been automatically generated by gem2tgz # ######################################################### # -*- encoding: utf-8 -*- # stub: jekyll-default-layout 0.1.4 ruby lib Gem::Specification.new do |s| s.name = "jekyll-default-layout".freeze s.version = "0.1.4" 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 = "2016-12-08" s.email = ["ben.balter@github.com".freeze] s.files = ["lib/jekyll-default-layout.rb".freeze, "lib/jekyll-default-layout/generator.rb".freeze, "lib/jekyll-default-layout/version.rb".freeze] s.homepage = "https://github.com/benbalter/jekyll-default-layout".freeze s.licenses = ["MIT".freeze] s.rubygems_version = "2.5.2.1".freeze s.summary = "Silently sets default layouts for Jekyll pages and posts".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, ["~> 3.0"]) s.add_development_dependency(%q.freeze, ["~> 3.5"]) s.add_development_dependency(%q.freeze, ["~> 0.43"]) else s.add_dependency(%q.freeze, ["~> 3.0"]) s.add_dependency(%q.freeze, ["~> 3.5"]) s.add_dependency(%q.freeze, ["~> 0.43"]) end else s.add_dependency(%q.freeze, ["~> 3.0"]) s.add_dependency(%q.freeze, ["~> 3.5"]) s.add_dependency(%q.freeze, ["~> 0.43"]) end end jekyll-default-layout-0.1.4/lib/0000755000004100000410000000000013514677667016567 5ustar www-datawww-datajekyll-default-layout-0.1.4/lib/jekyll-default-layout.rb0000644000004100000410000000013313514677667023340 0ustar www-datawww-datarequire "jekyll" require "jekyll-default-layout/generator" module JekyllDefaultLayout end jekyll-default-layout-0.1.4/lib/jekyll-default-layout/0000755000004100000410000000000013514677667023016 5ustar www-datawww-datajekyll-default-layout-0.1.4/lib/jekyll-default-layout/version.rb0000644000004100000410000000007213514677667025027 0ustar www-datawww-datamodule JekyllDefaultLayout VERSION = "0.1.4".freeze end jekyll-default-layout-0.1.4/lib/jekyll-default-layout/generator.rb0000644000004100000410000000350213514677667025331 0ustar www-datawww-datamodule JekyllDefaultLayout # Injects front matter defaults to set default layouts, if they exist class Generator < Jekyll::Generator attr_accessor :site safe true priority :lowest def initialize(site) @site = site end def generate(site) @site = site documents.each do |document| next unless should_set_layout?(document) document.data["layout"] = layout_for(document) end end def should_set_layout?(document) markdown?(document) && !layout_specified?(document) end # Does the given layout exist for the site? def layout_exists?(layout) !site.layouts[layout].nil? end # Has the user already specified a default for this layout? # Note: We must use `to_liquid`, and not data, to ensure front matter defaults def layout_specified?(document) document.to_liquid.key? "layout" end def markdown?(document) markdown_converter.matches(document.extname) end # What layout is appropriate for this document, if any # rubocop:disable Metrics/PerceivedComplexity def layout_for(document) if index?(document) && layout_exists?("home") "home" elsif page?(document) && layout_exists?("page") "page" elsif post?(document) && layout_exists?("post") "post" elsif layout_exists?("default") "default" end end def documents [site.pages, site.posts.docs].flatten end def markdown_converter @markdown_converter ||= site.find_converter_instance(Jekyll::Converters::Markdown) end def post?(document) document.is_a?(Jekyll::Document) && document.collection.label == "posts" end def page?(document) document.is_a?(Jekyll::Page) end def index?(document) document.url == "/" end end end