Class: GuidesStyle18F::Layouts

Inherits:
Jekyll::Layout
  • Object
show all
Defined in:
lib/guides_style_18f/layouts.rb

Overview

We have to essentially recreate the ::Jekyll::Layout constructor to loosen the default restriction that layouts be included in the site source.

Constant Summary collapse

LAYOUTS_DIR =
File.join(File.dirname(__FILE__), 'layouts')
SEARCH_RESULTS_LAYOUT =
'search-results'

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(site, subdir, layout_file) ⇒ Layouts

Returns a new instance of Layouts.



15
16
17
18
19
20
21
22
# File 'lib/guides_style_18f/layouts.rb', line 15

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

Class Method Details

.register(site) ⇒ Object



37
38
39
40
41
42
# File 'lib/guides_style_18f/layouts.rb', line 37

def self.register(site)
  site.layouts['guides_style_18f_default'] = new(site, '', 'default')
  site.layouts['guides_style_18f_generated_home_redirect'] = new(
    site, 'generated', 'home-redirect')
  register_search_results_layout(site)
end

.register_search_results_layout(site) ⇒ Object



44
45
46
47
48
49
50
51
# File 'lib/guides_style_18f/layouts.rb', line 44

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