module Dieses::Application::Sheets

Public Class Methods

available() click to toggle source
# File lib/dieses/application/sheets.rb, line 35
def self.available
  @registry.sort.to_h.transform_values do |proto|
    proto.derivate(variants: proto.klass.variants.values.map(&:derivate))
  end
end
available?(name) click to toggle source
# File lib/dieses/application/sheets.rb, line 8
def self.available?(name)
  @registry.key? name.to_sym
end
call(name, paper, variant: nil, param: {}) click to toggle source
# File lib/dieses/application/sheets.rb, line 31
def self.call(name, paper, variant: nil, param: {})
  sheet(name).new(paper, variant, **param).call
end
defaults() click to toggle source
# File lib/dieses/application/sheets.rb, line 41
def self.defaults
  {}.tap do |defaults|
    available.each_key do |name|
      defaults[name] = sheet(name).default_variant
    end
  end
end
dump(prefix: '') click to toggle source
# File lib/dieses/application/sheets.rb, line 49
def self.dump(prefix: '')
  Sheet::Proto.formatted(*available.values, prefix: prefix) do |proto|
    Sheet::Proto.formatted(*proto.variants, prefix: prefix * 2)
  end
end
proto(name) click to toggle source
# File lib/dieses/application/sheets.rb, line 21
def self.proto(name)
  raise Error, "No such sheet available: #{name}" unless @registry[name = name.to_sym]

  @registry[name]
end
register(name, klass:, desc:, default: nil) click to toggle source
# File lib/dieses/application/sheets.rb, line 12
def self.register(name, klass:, desc:, default: nil)
  @registry[name = name.to_sym] = Sheet::Proto.new(name:    name,
                                                   desc:    desc,
                                                   klass:   klass,
                                                   default: default).tap do |proto|
    klass.proto proto
  end
end
sheet(name) click to toggle source
# File lib/dieses/application/sheets.rb, line 27
def self.sheet(name)
  proto(name).klass
end