class CiteProc::Engine
@abstract
Attributes
Public Class Methods
Source
# 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
Returns the best available engine class or nil.
Source
# File lib/citeproc/engine.rb, line 61 def available subclasses.map(&:engine_name) end
Returns a list of all available engine names.
Source
# File lib/citeproc/engine.rb, line 25 def default @default ||= autodetect or warn 'no citeproc engine found' end
Source
# File lib/citeproc/engine.rb, line 32 def detect(name) subclasses.detect { |e| e.name == name } || block_given? ? yield(subclasses) : nil end
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.
Source
# File lib/citeproc/engine.rb, line 38 def detect!(name, &block) load(name) block_given? ? detect(name, &block) : detect(name) end
Loads the engine with the given name and returns the engine class.
Source
# File lib/citeproc/engine.rb, line 65 def engine_name @name ||= name.gsub(/::/, '-').downcase # returns class name as fallback end
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
Source
# 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
Loads the engine by requiring the engine name.
Source
# File lib/citeproc/engine.rb, line 78 def initialize(processor = nil) @processor = processor yield self if block_given? end
Public Instance Methods
Source
# File lib/citeproc/engine.rb, line 97 def bibliography raise NotImplementedByEngine end
Source
# File lib/citeproc/engine.rb, line 113 def inspect "#<CiteProc::Engine #{name}-#{type}-#{version}>" end
Source
# File lib/citeproc/engine.rb, line 89 def process raise NotImplementedByEngine end
Source
# File lib/citeproc/engine.rb, line 101 def render raise NotImplementedByEngine end
Source
# File lib/citeproc/engine.rb, line 105 def update_items raise NotImplementedByEngine end
Source
# File lib/citeproc/engine.rb, line 109 def update_uncited_items raise NotImplementedByEngine end