56 lines
1.4 KiB
Ruby
56 lines
1.4 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Jekyll
|
|
class Layout
|
|
include Convertible
|
|
|
|
attr_accessor :content, # content of layout
|
|
:data, # the Hash that holds the metadata for this layout
|
|
:ext # extension of layout
|
|
|
|
attr_reader :name, # name of layout
|
|
:path, # path to layout
|
|
:site, # the Site object
|
|
:relative_path # path to layout relative to its base
|
|
|
|
# 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
|