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