Create a LayoutReader class to read layouts

This commit is contained in:
Matt Rogers 2013-11-05 19:46:47 -06:00
parent 182a49fcff
commit f581940c71
3 changed files with 23 additions and 9 deletions

View File

@ -48,6 +48,7 @@ require 'jekyll/errors'
require 'jekyll/related_posts'
require 'jekyll/cleaner'
require 'jekyll/entry_filter'
require 'jekyll/layout_reader'
# extensions
require 'jekyll/plugin'

View File

@ -0,0 +1,21 @@
class LayoutReader
attr_reader :site
def initialize(site)
@site = site
@layouts = {}
end
def read
base = File.join(site.source, site.config['layouts'])
return @layouts unless File.exists?(base)
entries = []
Dir.chdir(base) { entries = EntryFilter.new(site).filter(Dir['**/*.*']) }
entries.each do |f|
name = f.split(".")[0..-2].join(".")
@layouts[name] = Layout.new(site, base, f)
end
@layouts
end
end

View File

@ -137,15 +137,7 @@ module Jekyll
#
# Returns nothing.
def read_layouts
base = File.join(self.source, self.config['layouts'])
return unless File.exists?(base)
entries = []
Dir.chdir(base) { entries = filter_entries(Dir['**/*.*'], base) }
entries.each do |f|
name = f.split(".")[0..-2].join(".")
self.layouts[name] = Layout.new(self, base, f)
end
self.layouts = LayoutReader.new(self).read
end
# Recursively traverse directories to find posts, pages and static files