class Dieses::Application::Sheet

Attributes

canvas[R]
paper[R]
param[R]
variant[R]

Public Class Methods

new(paper, variant: Undefined) click to toggle source
# File lib/dieses/application/sheet.rb, line 73
def initialize(paper, variant: Undefined)
  @paper   = paper
  @variant = Undefined.equal?(variant) ? self.class.default_variant : self.class.variant!(variant)
  @param   = parametrize
  @canvas  = Canvas.new(paper)
  @pen     = Pen.new(@canvas)

  setup if respond_to? :setup
end

Private Class Methods

default_variant() click to toggle source
# File lib/dieses/application/sheet.rb, line 97
def default_variant
  return variant!(default) unless Undefined.equal?(proto.default)

  variants.values.first
end
variant!(name) click to toggle source
# File lib/dieses/application/sheet.rb, line 103
def variant!(name)
  raise Error, "No variant defined: #{self.class}" if variants.empty?
  raise Error, "No such variant for #{self.class}: #{name}" unless variants.key?(name = name.to_sym)

  variants[name]
end

Public Instance Methods

produce(**kwargs) click to toggle source
# File lib/dieses/application/sheet.rb, line 83
def produce(**kwargs)
  call
  canvas.render(variables: self.class.style.to_h, **kwargs)
end

Private Instance Methods

parametrize(**param) click to toggle source
# File lib/dieses/application/sheet.rb, line 92
def parametrize(**param)
  Param.new(**self.class.param.to_h, **variant.param.to_h, **param.to_h)
end