LayoutReader#read: read in Theme layouts if they aren't already registered

This commit is contained in:
Parker Moore 2016-03-25 17:06:26 -07:00
parent a30068bf3f
commit 0920d2b48a
No known key found for this signature in database
GPG Key ID: 193CDEBA72063C58
1 changed files with 19 additions and 3 deletions

View File

@ -7,8 +7,12 @@ module Jekyll
end end
def read def read
layout_entries.each do |f| layout_entries.each do |layout_file|
@layouts[layout_name(f)] = Layout.new(site, layout_directory, f) @layouts[layout_name(layout_file)] = Layout.new(site, layout_directory, layout_file)
end
theme_layout_entries.each do |layout_file|
@layouts[layout_name(layout_file)] ||= Layout.new(site, theme_layout_directory, layout_file)
end end
@layouts @layouts
@ -18,11 +22,23 @@ module Jekyll
@layout_directory ||= (layout_directory_in_cwd || layout_directory_inside_source) @layout_directory ||= (layout_directory_in_cwd || layout_directory_inside_source)
end end
def theme_layout_directory
@theme_layout_directory ||= site.theme.layout_dir if site.theme
end
private private
def layout_entries def layout_entries
entries_in layout_directory
end
def theme_layout_entries
theme_layout_directory ? entries_in(theme_layout_directory) : []
end
def entries_in(dir)
entries = [] entries = []
within(layout_directory) do within(dir) do
entries = EntryFilter.new(site).filter(Dir['**/*.*']) entries = EntryFilter.new(site).filter(Dir['**/*.*'])
end end
entries entries