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