Class: CiteProc::Engine Abstract

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Includes:
Converters
Defined in:
lib/citeproc/engine.rb

Overview

This class is abstract.

Class Attribute Summary collapse

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(processor = nil) {|_self| ... } ⇒ Engine

Returns a new instance of Engine.

Yields:

  • (_self)

Yield Parameters:



78
79
80
81
# File 'lib/citeproc/engine.rb', line 78

def initialize(processor = nil)
  @processor = processor
  yield self if block_given?
end

Class Attribute Details

.defaultObject



25
26
27
# File 'lib/citeproc/engine.rb', line 25

def default
  @default ||= autodetect or warn 'no citeproc engine found'
end

.subclassesObject (readonly)

Returns the value of attribute subclasses.



13
14
15
# File 'lib/citeproc/engine.rb', line 13

def subclasses
  @subclasses
end

.typeObject (readonly)

Returns the value of attribute type.



13
14
15
# File 'lib/citeproc/engine.rb', line 13

def type
  @type
end

.versionObject (readonly)

Returns the value of attribute version.



13
14
15
# File 'lib/citeproc/engine.rb', line 13

def version
  @version
end

Instance Attribute Details

#processorObject

Returns the value of attribute processor.



74
75
76
# File 'lib/citeproc/engine.rb', line 74

def processor
  @processor
end

Class Method Details

.autodetect(options = {}) ⇒ Object

Returns the best available engine class or nil.



44
45
46
47
48
49
50
51
# 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

.availableObject

Returns a list of all available engine names.



61
62
63
# File 'lib/citeproc/engine.rb', line 61

def available
  subclasses.map(&:engine_name)
end

.detect(name) ⇒ Object

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.



32
33
34
35
# File 'lib/citeproc/engine.rb', line 32

def detect(name)
  subclasses.detect { |e| e.name == name } ||
    block_given? ? yield(subclasses) : nil
end

.detect!(name) ⇒ Object

Loads the engine with the given name and returns the engine class.



38
39
40
41
# File 'lib/citeproc/engine.rb', line 38

def detect!(name)
  load(name)
  block_given? ? detect(name, &Proc.new) : detect(name)
end

.engine_nameObject



65
66
67
# File 'lib/citeproc/engine.rb', line 65

def engine_name
  @name ||= name.gsub(/::/, '-').downcase # returns class name as fallback
end

.load(name) ⇒ Object

Loads the engine by requiring the engine name.



54
55
56
57
58
# 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

.priorityObject



69
70
71
# File 'lib/citeproc/engine.rb', line 69

def priority
  @priority ||= 0
end

Instance Method Details

#appendObject

Raises:

  • (NotImplementedByEngine)


93
94
95
# File 'lib/citeproc/engine.rb', line 93

def append
  raise NotImplementedByEngine
end

#bibliographyObject

Raises:

  • (NotImplementedByEngine)


97
98
99
# File 'lib/citeproc/engine.rb', line 97

def bibliography
  raise NotImplementedByEngine
end

#inspectObject



113
114
115
# File 'lib/citeproc/engine.rb', line 113

def inspect
  "#<CiteProc::Engine #{name}-#{type}-#{version}>"
end

#processObject

Raises:

  • (NotImplementedByEngine)


89
90
91
# File 'lib/citeproc/engine.rb', line 89

def process
  raise NotImplementedByEngine
end

#renderObject

Raises:

  • (NotImplementedByEngine)


101
102
103
# File 'lib/citeproc/engine.rb', line 101

def render
  raise NotImplementedByEngine
end

#update_itemsObject

Raises:

  • (NotImplementedByEngine)


105
106
107
# File 'lib/citeproc/engine.rb', line 105

def update_items
  raise NotImplementedByEngine
end

#update_uncited_itemsObject

Raises:

  • (NotImplementedByEngine)


109
110
111
# File 'lib/citeproc/engine.rb', line 109

def update_uncited_items
  raise NotImplementedByEngine
end