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

Version Path
bridgetown-core-1.1.0 lib/bridgetown-core/readers/layout_reader.rb
bridgetown-core-1.1.0.beta3 lib/bridgetown-core/readers/layout_reader.rb
bridgetown-core-1.1.0.beta2 lib/bridgetown-core/readers/layout_reader.rb
bridgetown-core-1.1.0.beta1 lib/bridgetown-core/readers/layout_reader.rb
bridgetown-core-1.0.0 lib/bridgetown-core/readers/layout_reader.rb
bridgetown-core-1.0.0.beta3 lib/bridgetown-core/readers/layout_reader.rb
bridgetown-core-1.0.0.beta2 lib/bridgetown-core/readers/layout_reader.rb
bridgetown-core-1.0.0.beta1 lib/bridgetown-core/readers/layout_reader.rb
bridgetown-core-1.0.0.alpha11 lib/bridgetown-core/readers/layout_reader.rb
bridgetown-core-1.0.0.alpha10 lib/bridgetown-core/readers/layout_reader.rb
bridgetown-core-1.0.0.alpha9 lib/bridgetown-core/readers/layout_reader.rb
bridgetown-core-1.0.0.alpha8 lib/bridgetown-core/readers/layout_reader.rb
bridgetown-core-1.0.0.alpha7 lib/bridgetown-core/readers/layout_reader.rb