Skip to content

Commit

Permalink
tomdoc and normalize new extension and converter classes
Browse files Browse the repository at this point in the history
  • Loading branch information
mojombo committed Apr 21, 2010
1 parent 0ba1f6c commit a8efc3a
Show file tree
Hide file tree
Showing 3 changed files with 77 additions and 47 deletions.
42 changes: 27 additions & 15 deletions lib/jekyll/converter.rb
Original file line number Diff line number Diff line change
@@ -1,31 +1,43 @@
module Jekyll

class Converter < Extension
# 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

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 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

# prefix for highlighting
# 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
72 changes: 43 additions & 29 deletions lib/jekyll/extension.rb
Original file line number Diff line number Diff line change
@@ -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
# 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

def all
subclasses
end
# The list of Classes that have been subclassed.
#
# Returns an Array of Class objects.
def self.subclasses
@subclasses ||= []
end

# priority order of this converter
def priority(priority = nil)
if priority && PRIORITIES.has_key?(priority)
@priority = priority
end
@priority || :normal
# 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]
#
# Returns -1, 0, 1
def <=>(other)
cmp = PRIORITIES[other.priority] <=> PRIORITIES[self.priority]
return cmp
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
end
10 changes: 7 additions & 3 deletions lib/jekyll/site.rb
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,15 @@ def reset
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
Expand Down

0 comments on commit a8efc3a

Please sign in to comment.