class GuidesStyleMbland::Layouts
We have to essentially recreate the ::Jekyll::Layout constructor to loosen the default restriction that layouts be included in the site source.
Constants
- LAYOUTS_DIR
- SEARCH_RESULTS_LAYOUT
Public Class Methods
new(site, subdir, layout_file)
click to toggle source
# File lib/guides_style_mbland/layouts.rb, line 13 def initialize(site, subdir, layout_file) @site = site @base = File.join(LAYOUTS_DIR, subdir) @name = "#{layout_file}.html" @path = File.join @base, @name parse_content_and_data File.join(@base, name) process name end
register(site)
click to toggle source
# File lib/guides_style_mbland/layouts.rb, line 35 def self.register(site) site.layouts['guides_style_mbland_default'] = new(site, '', 'default') site.layouts['guides_style_mbland_generated_home_redirect'] = new( site, 'generated', 'home-redirect') register_search_results_layout(site) end
register_search_results_layout(site)
click to toggle source
# File lib/guides_style_mbland/layouts.rb, line 42 def self.register_search_results_layout(site) layouts_dir = File.join(site.source, site.config['layouts_dir']) results_layout = File.join(layouts_dir, "#{SEARCH_RESULTS_LAYOUT}.html") unless File.exist?(results_layout) site.layouts[SEARCH_RESULTS_LAYOUT] = new( site, '', SEARCH_RESULTS_LAYOUT) end end
Private Instance Methods
parse_content_and_data(file_path)
click to toggle source
# File lib/guides_style_mbland/layouts.rb, line 22 def parse_content_and_data(file_path) self.data = {} self.content = File.read(file_path) front_matter_pattern = /^(---\n.*)---\n/m front_matter_match = front_matter_pattern.match content return unless front_matter_match self.content = front_matter_match.post_match self.data = SafeYAML.load front_matter_match[1], safe: true end