Class: ActiveFields::Registry

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/active_fields/registry.rb

Overview

Storage for configured relations between active fields and customizable models

Instance Method Summary collapse

Constructor Details

#initializeRegistry



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

def initialize
  @customizables = {}
  @fields = {}
end

Instance Method Details

#add(field_type_name, customizable_type) ⇒ Object

Add relation between active field type and customizable type



14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/active_fields/registry.rb', line 14

def add(field_type_name, customizable_type)
  if ActiveFields.config.type_names.exclude?(field_type_name)
    raise ArgumentError, "undefined ActiveFields type provided for #{customizable_type}: #{field_type_name}"
  end

  @customizables[field_type_name] ||= Set.new
  @customizables[field_type_name] << customizable_type

  @fields[customizable_type] ||= Set.new
  @fields[customizable_type] << field_type_name

  nil
end

#customizable_types_for(field_type_name) ⇒ Object

Returns customizable types that allow provided active field type name



29
30
31
# File 'lib/active_fields/registry.rb', line 29

def customizable_types_for(field_type_name)
  @customizables[field_type_name]
end

#field_type_names_for(customizable_type) ⇒ Object

Returns active field type names, allowed for given customizable type



34
35
36
# File 'lib/active_fields/registry.rb', line 34

def field_type_names_for(customizable_type)
  @fields[customizable_type]
end