Sha256: ae515a38171521310c6d78263f6a2596366b4e245d6eb69d17d653a88a503b58
Contents?: true
Size: 1.22 KB
Versions: 13
Compression:
Stored size: 1.22 KB
Contents
# frozen_string_literal: true module Bridgetown class LayoutReader attr_reader :site def initialize(site) @site = site @layouts = HashWithDotAccess::Hash.new end 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.filter_map(&:layouts).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 def layout_directory @layout_directory ||= site.in_source_dir(site.config["layouts_dir"]) end private def layout_entries(dir = layout_directory) entries_in dir end def entries_in(dir) entries = [] within(dir) do entries = EntryFilter.new(site).filter(Dir["**/*.*"]) end entries end def layout_name(file) Layout.label_for_file(file) end def within(directory, &block) return unless File.exist?(directory) Dir.chdir(directory, &block) end end end
Version data entries
13 entries across 13 versions & 1 rubygems