class Voom::Presenters::Registry

Public Class Methods

define(name, namespace, options, &block) click to toggle source
# File lib/voom/presenters/registry.rb, line 14
def self.define(name, namespace, options, &block)
  namespace = Array(namespace).map(&:to_s)
  fq_name = namespace.any? ? namespace.join(':') + ':' + name.to_s : name.to_s
  registry[fq_name] = Voom::Presenters::DSL::Definition.new(name, namespace, options, &block)
end
finalize() click to toggle source
# File lib/voom/presenters/registry.rb, line 27
def self.finalize
  registry.each do |key, definition|
    begin
      register(key, build(definition))
    rescue Exception => e
      logger.error {"Failed to load presenter #{key}: #{e.inspect}."}
      raise e
    end
  end
end
load(directory) click to toggle source
# File lib/voom/presenters/registry.rb, line 20
def self.load(directory)
  files = File.join(directory, '**', '*.pom')
  Dir.glob(files) do |file|
    Kernel.load file
  end
end
registry() click to toggle source
# File lib/voom/presenters/registry.rb, line 10
def self.registry
  @registry
end
reset!() click to toggle source

This method empties out the dsl definitions It should ONLY be used for testing purposes

# File lib/voom/presenters/registry.rb, line 40
def self.reset!
  registry.clear
end

Private Class Methods

build(definition) click to toggle source
# File lib/voom/presenters/registry.rb, line 50
def self.build(definition)
  definition.build
end
register(name, definition) click to toggle source
# File lib/voom/presenters/registry.rb, line 46
def self.register(name, definition)
  return Voom::Presenters::App.register(name: name, presenter: definition) unless Voom::Presenters::App.registered?(name)
end