Class: JekyllDefaultLayout::Generator
- Inherits:
-
Jekyll::Generator
- Object
- Jekyll::Generator
- JekyllDefaultLayout::Generator
- Defined in:
- lib/jekyll-default-layout/generator.rb
Overview
Injects front matter defaults to set default layouts, if they exist
Instance Attribute Summary collapse
-
#site ⇒ Object
Returns the value of attribute site.
Instance Method Summary collapse
- #documents ⇒ Object
- #generate(site) ⇒ Object
-
#initialize(site) ⇒ Generator
constructor
A new instance of Generator.
-
#layout_exists?(layout) ⇒ Boolean
Does the given layout exist for the site?.
-
#layout_for(document) ⇒ Object
What layout is appropriate for this document, if any.
-
#layout_specified?(document) ⇒ Boolean
Has the user already specified a default for this layout?.
- #markdown?(document) ⇒ Boolean
- #markdown_converter ⇒ Object
- #page?(document) ⇒ Boolean
- #post?(document) ⇒ Boolean
- #should_set_layout?(document) ⇒ Boolean
Constructor Details
#initialize(site) ⇒ Generator
Returns a new instance of Generator.
9 10 11 |
# File 'lib/jekyll-default-layout/generator.rb', line 9 def initialize(site) @site = site end |
Instance Attribute Details
#site ⇒ Object
Returns the value of attribute site.
4 5 6 |
# File 'lib/jekyll-default-layout/generator.rb', line 4 def site @site end |
Instance Method Details
#documents ⇒ Object
50 51 52 |
# File 'lib/jekyll-default-layout/generator.rb', line 50 def documents [site.pages, site.posts.docs].flatten end |
#generate(site) ⇒ Object
13 14 15 16 17 18 19 |
# File 'lib/jekyll-default-layout/generator.rb', line 13 def generate(site) @site = site documents.each do |document| next unless should_set_layout?(document) document.data["layout"] = layout_for(document) end end |
#layout_exists?(layout) ⇒ Boolean
Does the given layout exist for the site?
26 27 28 |
# File 'lib/jekyll-default-layout/generator.rb', line 26 def layout_exists?(layout) !site.layouts[layout].nil? end |
#layout_for(document) ⇒ Object
What layout is appropriate for this document, if any
40 41 42 43 44 45 46 47 48 |
# File 'lib/jekyll-default-layout/generator.rb', line 40 def layout_for(document) if page?(document) && layout_exists?("page") "page" elsif post?(document) && layout_exists?("post") "post" elsif layout_exists?("default") "default" end end |
#layout_specified?(document) ⇒ Boolean
Has the user already specified a default for this layout?
31 32 33 |
# File 'lib/jekyll-default-layout/generator.rb', line 31 def layout_specified?(document) document.data.key? "layout" end |
#markdown?(document) ⇒ Boolean
35 36 37 |
# File 'lib/jekyll-default-layout/generator.rb', line 35 def markdown?(document) markdown_converter.matches(document.extname) end |
#markdown_converter ⇒ Object
54 55 56 |
# File 'lib/jekyll-default-layout/generator.rb', line 54 def markdown_converter @markdown_converter ||= site.find_converter_instance(Jekyll::Converters::Markdown) end |
#page?(document) ⇒ Boolean
62 63 64 |
# File 'lib/jekyll-default-layout/generator.rb', line 62 def page?(document) document.is_a?(Jekyll::Page) end |
#post?(document) ⇒ Boolean
58 59 60 |
# File 'lib/jekyll-default-layout/generator.rb', line 58 def post?(document) document.is_a?(Jekyll::Document) && document.collection.label == "posts" end |
#should_set_layout?(document) ⇒ Boolean
21 22 23 |
# File 'lib/jekyll-default-layout/generator.rb', line 21 def should_set_layout?(document) markdown?(document) && !layout_specified?(document) end |