class Bridgetown::LayoutReader

Attributes

site[R]

Public Class Methods

new(site) click to toggle source
# File lib/bridgetown-core/readers/layout_reader.rb, line 7
def initialize(site)
  @site = site
  @layouts = HashWithDotAccess::Hash.new
end

Public Instance Methods

layout_directory() click to toggle source
# File lib/bridgetown-core/readers/layout_reader.rb, line 28
def layout_directory
  @layout_directory ||= site.in_source_dir(site.config["layouts_dir"])
end
read() click to toggle source
# File lib/bridgetown-core/readers/layout_reader.rb, line 12
def read
  layout_entries.each do |layout_file|
    @layouts[layout_name(layout_file)] = \
      Layout.new(site, layout_directory, layout_file)
  end

  Bridgetown::PluginManager.source_manifests.map(&:layouts).compact.each do |plugin_layouts|
    layout_entries(plugin_layouts).each do |layout_file|
      @layouts[layout_name(layout_file)] ||= \
        Layout.new(site, plugin_layouts, layout_file, from_plugin: true)
    end
  end

  @layouts
end

Private Instance Methods

entries_in(dir) click to toggle source
# File lib/bridgetown-core/readers/layout_reader.rb, line 38
def entries_in(dir)
  entries = []
  within(dir) do
    entries = EntryFilter.new(site).filter(Dir["**/*.*"])
  end
  entries
end
layout_entries(dir = layout_directory) click to toggle source
# File lib/bridgetown-core/readers/layout_reader.rb, line 34
def layout_entries(dir = layout_directory)
  entries_in dir
end
layout_name(file) click to toggle source
# File lib/bridgetown-core/readers/layout_reader.rb, line 46
def layout_name(file)
  Layout.label_for_file(file)
end
within(directory) { || ... } click to toggle source
# File lib/bridgetown-core/readers/layout_reader.rb, line 50
def within(directory)
  return unless File.exist?(directory)

  Dir.chdir(directory) { yield }
end