class CiteProc::Processor

Attributes

defaults[R]
data[R]
engine[W]
items[R]
options[R]

Public Class Methods

new(options = {}) { |self| ... } click to toggle source
# File lib/citeproc/processor.rb, line 28
def initialize(options = {})
  @options, @items, @data = Processor.defaults.merge(options), {}, []
  yield self if block_given?
end

Public Instance Methods

<<(item) click to toggle source
# File lib/citeproc/processor.rb, line 58
def <<(item)
  register(item)
  self
end
[](id) click to toggle source
# File lib/citeproc/processor.rb, line 37
def [](id)
  items[id.to_s]
end
[]=(id, item) click to toggle source
# File lib/citeproc/processor.rb, line 41
def []=(id, item)
  item = Item(item)
  item.id = id.to_s

  register(items)
end
append(*arguments) click to toggle source
# File lib/citeproc/processor.rb, line 96
def append(*arguments)
  engine.append(CitationData.new(arguments.flatten(1)))
end
bibliography(attributes = nil, &block) click to toggle source

Generates a bibliography for all items matching the passed-in selector conditions or block.

@example

processor.bibliography all: { type: 'book' }
#-> renders bibliography for all books

@return [Bibliography] the bibliography

# File lib/citeproc/processor.rb, line 108
def bibliography(attributes = nil, &block)
  engine.bibliography(Selector.new(attributes, &block))
end
engine() click to toggle source
# File lib/citeproc/processor.rb, line 33
def engine
  @engine ||= Engine.autodetect(options).new(self)
end
import(*arguments)
Alias for: update
inspect() click to toggle source
# File lib/citeproc/processor.rb, line 116
def inspect
  "#<CiteProc::Processor style=#{options[:style].inspect} locale=#{options[:locale].inspect} items=[#{items.length}]>"
end
process(*arguments) click to toggle source
# File lib/citeproc/processor.rb, line 92
def process(*arguments)
  engine.process(CitationData.new(arguments.flatten(1)))
end
register(item) click to toggle source
# File lib/citeproc/processor.rb, line 48
def register(item)
  item = Item(item)

  data << item
  items[item.id.to_s] = item

rescue => e
  raise "failed to register item #{item.inspect}: #{e.message}"
end
render(mode, *arguments) click to toggle source
# File lib/citeproc/processor.rb, line 112
def render(mode, *arguments)
  engine.render(mode, CitationData.new(arguments.flatten(1)))
end
update(*arguments) { |items, item| ... } click to toggle source
# File lib/citeproc/processor.rb, line 63
def update(*arguments)
  arguments.each do |argument|
    case argument
    when Item
      register(argument)
    when Array
      argument.each { |item| register(item) }
    when Hash
      argument.each do |id, item|
        id, item = id.to_s, Item(item)

        if items.key?(id) && block_given?
          items[id] = yield items[id], item
        else
          items[id] = item
        end
      end
    else
      raise "failed to register items #{argument.inspect}"
    end
  end

  self
ensure
  # notify engine
end
Also aliased as: import