# frozen_string_literal: true module Jekyll class Layout include Convertible # Gets the Site object. attr_reader :site # Gets the name of this layout. attr_reader :name # Gets the path to this layout. attr_reader :path # Gets the path to this layout relative to its base attr_reader :relative_path # Gets/Sets the extension of this layout. attr_accessor :ext # Gets/Sets the Hash that holds the metadata for this layout. attr_accessor :data # Gets/Sets the content of this layout. attr_accessor :content # Initialize a new Layout. # # site - The Site. # base - The String path to the source. # name - The String filename of the post file. def initialize(site, base, name) @site = site @base = base @name = name if site.theme && site.theme.layouts_path.eql?(base) @base_dir = site.theme.root @path = site.in_theme_dir(base, name) else @base_dir = site.source @path = site.in_source_dir(base, name) end @relative_path = @path.sub(@base_dir, "") self.data = {} process(name) read_yaml(base, name) end # Extract information from the layout filename. # # name - The String filename of the layout file. # # Returns nothing. def process(name) self.ext = File.extname(name) end # Returns the object as a debug String. def inspect "#<#{self.class} @path=#{@path.inspect}>" end end end