From f581940c7103f079f13ab84ddf474e2d777a14f4 Mon Sep 17 00:00:00 2001 From: Matt Rogers Date: Tue, 5 Nov 2013 19:46:47 -0600 Subject: [PATCH] Create a LayoutReader class to read layouts --- lib/jekyll.rb | 1 + lib/jekyll/layout_reader.rb | 21 +++++++++++++++++++++ lib/jekyll/site.rb | 10 +--------- 3 files changed, 23 insertions(+), 9 deletions(-) create mode 100644 lib/jekyll/layout_reader.rb 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