class CannedTuna::Component

Public Class Methods

template(&block) click to toggle source
# File lib/canned_tuna/component.rb, line 5
def self.template &block
  if block_given?
    @template = block
  else
    @template || proc {}
  end
end

Public Instance Methods

draw_in(pdf, &block) click to toggle source
# File lib/canned_tuna/component.rb, line 13
def draw_in pdf, &block
  register_outlets(&block)

  with_temporary_document(pdf) do
    instance_exec(&self.class.template)
  end
end

Private Instance Methods

content() click to toggle source
# File lib/canned_tuna/component.rb, line 23
def content
  @content ||= ContentProxy.new
end
outlet(name = :default, &default_content) click to toggle source
# File lib/canned_tuna/component.rb, line 27
def outlet name = :default, &default_content
  content.outlet_for(name, &default_content).call
end
register_outlets(&block) click to toggle source
# File lib/canned_tuna/component.rb, line 37
def register_outlets &block
  return unless block_given?

  # Multiple content outlets
  if block.arity > 0
    instance_exec(content, &block)
  # Default content outlet (short-hand syntax)
  else
    content.outlet(:default, &block)
  end
end
with_temporary_document(pdf) { || ... } click to toggle source
# File lib/canned_tuna/component.rb, line 31
def with_temporary_document pdf
  @document = pdf
  yield
  @document = nil
end