Module: Shaf::RegistrableFactory

Included in:
Command::Factory, Generator::Factory, Generator::Migration::Factory
Defined in:
lib/shaf/registrable_factory.rb

Defined Under Namespace

Classes: NotFoundError

Instance Method Summary collapse

Instance Method Details

#allObject



6
7
8
# File 'lib/shaf/registrable_factory.rb', line 6

def all
  reg.dup
end

#create(*params) ⇒ Object

Raises:



37
38
39
40
41
42
43
# File 'lib/shaf/registrable_factory.rb', line 37

def create(*params)
  clazz = lookup(*params)
  raise NotFoundError.new(%Q(Command '#{ARGV}' is not supported)) unless clazz

  args = init_args(clazz, params)
  clazz.new(*args)
end

#lookup(*str) ⇒ Object



23
24
25
26
27
28
# File 'lib/shaf/registrable_factory.rb', line 23

def lookup(*str)
  return if str.empty? || !str.all?
  reg.select { |clazz| matching_class? str, clazz }
    .sort_by(&method(:identifier_count))
    .last
end

#register(clazz) ⇒ Object



14
15
16
# File 'lib/shaf/registrable_factory.rb', line 14

def register(clazz)
  reg << clazz
end

#sizeObject



10
11
12
# File 'lib/shaf/registrable_factory.rb', line 10

def size
  reg.size
end

#unregister(*str) ⇒ Object



18
19
20
21
# File 'lib/shaf/registrable_factory.rb', line 18

def unregister(*str)
  return if str.empty? || !str.all?
  reg.delete_if { |clazz| matching_class? str, clazz }
end

#usageObject



30
31
32
33
34
35
# File 'lib/shaf/registrable_factory.rb', line 30

def usage
  reg.compact.map do |entry|
    usage = entry.instance_eval { @usage }
    usage.respond_to?(:call) ? usage.call : usage
  end
end