diff --git a/lib/jekyll/converter.rb b/lib/jekyll/converter.rb index 7beddd36..4f46719a 100644 --- a/lib/jekyll/converter.rb +++ b/lib/jekyll/converter.rb @@ -1,31 +1,43 @@ module Jekyll class Converter < Extension - - class << self - # prefix for highlighting - def pygments_prefix(pygments_prefix = nil) - @pygments_prefix = pygments_prefix if pygments_prefix - @pygments_prefix - end - - # suffix for highlighting - def pygments_suffix(pygments_suffix = nil) - @pygments_suffix = pygments_suffix if pygments_suffix - @pygments_suffix - end + # Public: Get or set the pygments prefix. When an argument is specified, + # the prefix will be set. If no argument is specified, the current prefix + # will be returned. + # + # pygments_prefix - The String prefix (default: nil). + # + # Returns the String prefix. + def self.pygments_prefix(pygments_prefix = nil) + @pygments_prefix = pygments_prefix if pygments_prefix + @pygments_prefix end - # prefix for highlighting + # Public: Get or set the pygments suffix. When an argument is specified, + # the suffix will be set. If no argument is specified, the current suffix + # will be returned. + # + # pygments_suffix - The String suffix (default: nil). + # + # Returns the String suffix. + def self.pygments_suffix(pygments_suffix = nil) + @pygments_suffix = pygments_suffix if pygments_suffix + @pygments_suffix + end + + # Get the pygments prefix. + # + # Returns the String prefix. def pygments_prefix self.class.pygments_prefix end - # suffix for highlighting + # Get the pygments suffix. + # + # Returns the String suffix. def pygments_suffix self.class.pygments_suffix end - end end \ No newline at end of file diff --git a/lib/jekyll/extension.rb b/lib/jekyll/extension.rb index 334b0ff5..e8f4b82d 100644 --- a/lib/jekyll/extension.rb +++ b/lib/jekyll/extension.rb @@ -1,48 +1,62 @@ module Jekyll class Extension - PRIORITIES = { :lowest => -100, :low => -10, :normal => 0, :high => 10, :highest => 100 } - class << self - def subclasses - @subclasses ||= [] - end - - def inherited(base) - subclasses << base - subclasses.sort! - end - - def all - subclasses - end - - # priority order of this converter - def priority(priority = nil) - if priority && PRIORITIES.has_key?(priority) - @priority = priority - end - @priority || :normal - end - - # Spaceship is priority [higher -> lower] - # - # Returns -1, 0, 1 - def <=>(other) - cmp = PRIORITIES[other.priority] <=> PRIORITIES[self.priority] - return cmp - end + # Install a hook so that subclasses are recorded. This method is only + # ever called by Ruby itself. + # + # base - The Class subclass. + # + # Returns nothing. + def self.inherited(base) + subclasses << base + subclasses.sort! end + # The list of Classes that have been subclassed. + # + # Returns an Array of Class objects. + def self.subclasses + @subclasses ||= [] + end + + # Get or set the priority of this converter. When called without an + # argument it returns the priority. When an argument is given, it will + # set the priority. + # + # priority - The Symbol priority (default: nil). Valid options are: + # :lowest, :low, :normal, :high, :highest + # + # Returns the Symbol priority. + def self.priority(priority = nil) + if priority && PRIORITIES.has_key?(priority) + @priority = priority + end + @priority || :normal + end + + # Spaceship is priority [higher -> lower] + # + # other - The class to be compared. + # + # Returns -1, 0, 1. + def self.<=>(other) + PRIORITIES[other.priority] <=> PRIORITIES[self.priority] + end + + # Initialize a new extension. This should be overridden by the subclass. + # + # config - The Hash of configuration options. + # + # Returns a new instance. def initialize(config = {}) - #no-op for default + # no-op for default end - end -end \ No newline at end of file +end diff --git a/lib/jekyll/site.rb b/lib/jekyll/site.rb index b0481ad1..7b5fa683 100644 --- a/lib/jekyll/site.rb +++ b/lib/jekyll/site.rb @@ -36,11 +36,15 @@ module Jekyll end def setup - # Check to see if LSI is enabled. require 'classifier' if self.lsi - self.converters = Jekyll::Converter.all.collect { |c| c.new(self.config) } - self.generators = Jekyll::Generator.all.collect { |c| c.new(self.config) } + self.converters = Jekyll::Converter.subclasses.map do |c| + c.new(self.config) + end + + self.generators = Jekyll::Generator.subclasses.map do |c| + c.new(self.config) + end end # Do the actual work of processing the site and generating the