diff --git a/lib/jekyll.rb b/lib/jekyll.rb index caa45e50..803b6fa4 100644 --- a/lib/jekyll.rb +++ b/lib/jekyll.rb @@ -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' diff --git a/lib/jekyll/layout_reader.rb b/lib/jekyll/layout_reader.rb new file mode 100644 index 00000000..a44b2e06 --- /dev/null +++ b/lib/jekyll/layout_reader.rb @@ -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 diff --git a/lib/jekyll/site.rb b/lib/jekyll/site.rb index 7457ca6d..a154d134 100644 --- a/lib/jekyll/site.rb +++ b/lib/jekyll/site.rb @@ -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