From 10ee5c8999626ce91746c3720f6051475e3e58d0 Mon Sep 17 00:00:00 2001 From: Matt Rogers Date: Sat, 16 Mar 2013 15:19:32 +0100 Subject: [PATCH] Remove the duplication when creating Converters and Generators Encapsulate it in a method and give the method the class to walk the subclass tree for to create new objects. --- lib/jekyll/site.rb | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/lib/jekyll/site.rb b/lib/jekyll/site.rb index 94c4b1a0..da7f7f8b 100644 --- a/lib/jekyll/site.rb +++ b/lib/jekyll/site.rb @@ -88,17 +88,8 @@ module Jekyll end end - self.converters = Jekyll::Converter.subclasses.select do |c| - !self.safe || c.safe - end.map do |c| - c.new(self.config) - end - - self.generators = Jekyll::Generator.subclasses.select do |c| - !self.safe || c.safe - end.map do |c| - c.new(self.config) - end + self.converters = instantiate_subclasses(Jekyll::Converter) + self.generators = instantiate_subclasses(Jekyll::Generator) end # Internal: Setup the plugin search path @@ -388,6 +379,21 @@ module Jekyll end end + # Create array of instances of the subclasses of the class or module + # passed in as argument. + # + # klass - class or module containing the subclasses which should be + # instantiated + # + # Returns array of instances of subclasses of parameter + def instantiate_subclasses(klass) + klass.subclasses.select do |c| + !self.safe || c.safe + end.map do |c| + c.new(self.config) + end + end + # Read the entries from a particular directory for processing # # dir - The String relative path of the directory to read