Class: Trestle::Registry

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/trestle/registry.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeRegistry

Returns a new instance of Registry.



8
9
10
# File 'lib/trestle/registry.rb', line 8

def initialize
  reset!
end

Instance Attribute Details

#adminsObject (readonly)

The admins hash is left exposed for backwards compatibility



6
7
8
# File 'lib/trestle/registry.rb', line 6

def admins
  @admins
end

Instance Method Details

#each(&block) ⇒ Object



12
13
14
# File 'lib/trestle/registry.rb', line 12

def each(&block)
  @admins.values.sort_by(&:admin_name).each(&block)
end

#empty?Boolean

Returns:

  • (Boolean)


21
22
23
# File 'lib/trestle/registry.rb', line 21

def empty?
  none?
end

#lookup_admin(admin) ⇒ Object Also known as: lookup



29
30
31
32
33
34
35
36
37
# File 'lib/trestle/registry.rb', line 29

def lookup_admin(admin)
  # Given object is already an admin class
  return admin if admin.is_a?(Class) && admin < Trestle::Admin

  # Given object is already an admin instance
  return admin if admin.is_a?(Trestle::Admin)

  @admins[admin.to_s]
end

#lookup_model(model) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/trestle/registry.rb', line 40

def lookup_model(model)
  # Lookup each class in the model's ancestor chain
  while model
    admin = models[model.name]
    return admin if admin

    model = model.superclass
  end

  # No admin found
  nil
end

#register(admin) ⇒ Object



25
26
27
# File 'lib/trestle/registry.rb', line 25

def register(admin)
  @admins[admin.admin_name] = admin
end

#reset!Object



16
17
18
19
# File 'lib/trestle/registry.rb', line 16

def reset!
  @admins = {}
  @models = nil
end