class CiteProc::Engine
@abstract
Attributes
default[W]
subclasses[R]
type[R]
version[R]
processor[RW]
Public Class Methods
autodetect(options = {})
click to toggle source
Returns the best available engine class or nil.
# File lib/citeproc/engine.rb, line 44 def autodetect(options = {}) load('citeproc-ruby') if subclasses.empty? subclasses.detect { |e| !options.has_key?(:engine) || e.name == options[:engine] and !options.has_key?(:name) || e.name == options[:name] } || subclasses.first end
available()
click to toggle source
Returns a list of all available engine names.
# File lib/citeproc/engine.rb, line 61 def available subclasses.map(&:engine_name) end
default()
click to toggle source
# File lib/citeproc/engine.rb, line 25 def default @default ||= autodetect or warn 'no citeproc engine found' end
detect(name) { |subclasses| ... }
click to toggle source
Returns the engine class for the given name or nil. If no suitable class is found and a block is given, executes the block and returns the result. The list of available engines will be passed to the block.
# File lib/citeproc/engine.rb, line 32 def detect(name) subclasses.detect { |e| e.name == name } || block_given? ? yield(subclasses) : nil end
detect!(name, &block)
click to toggle source
Loads the engine with the given name and returns the engine class.
# File lib/citeproc/engine.rb, line 38 def detect!(name, &block) load(name) block_given? ? detect(name, &block) : detect(name) end
engine_name()
click to toggle source
# File lib/citeproc/engine.rb, line 65 def engine_name @name ||= name.gsub(/::/, '-').downcase # returns class name as fallback end
inherited(subclass)
click to toggle source
# File lib/citeproc/engine.rb, line 19 def inherited(subclass) subclass.public_class_method :new @subclasses << subclass @subclasses = subclasses.sort_by { |engine| -1 * engine.priority } end
load(name)
click to toggle source
Loads the engine by requiring the engine name.
# File lib/citeproc/engine.rb, line 54 def load(name) require name.gsub(/-/,'/') rescue LoadError warn "failed to load #{name} engine: try to gem install #{name}" end
new(processor = nil) { |self| ... }
click to toggle source
# File lib/citeproc/engine.rb, line 78 def initialize(processor = nil) @processor = processor yield self if block_given? end
priority()
click to toggle source
# File lib/citeproc/engine.rb, line 69 def priority @priority ||= 0 end
Public Instance Methods
append()
click to toggle source
# File lib/citeproc/engine.rb, line 93 def append raise NotImplementedByEngine end
bibliography()
click to toggle source
# File lib/citeproc/engine.rb, line 97 def bibliography raise NotImplementedByEngine end
inspect()
click to toggle source
# File lib/citeproc/engine.rb, line 113 def inspect "#<CiteProc::Engine #{name}-#{type}-#{version}>" end
process()
click to toggle source
# File lib/citeproc/engine.rb, line 89 def process raise NotImplementedByEngine end
render()
click to toggle source
# File lib/citeproc/engine.rb, line 101 def render raise NotImplementedByEngine end
update_items()
click to toggle source
# File lib/citeproc/engine.rb, line 105 def update_items raise NotImplementedByEngine end
update_uncited_items()
click to toggle source
# File lib/citeproc/engine.rb, line 109 def update_uncited_items raise NotImplementedByEngine end