Class: ActiveFields::Registry
- Inherits:
-
Object
- Object
- ActiveFields::Registry
- Includes:
- Singleton
- Defined in:
- lib/active_fields/registry.rb
Overview
Storage for configured relations between active fields and customizable models
Instance Method Summary collapse
-
#add(field_type_name, customizable_type) ⇒ Object
Add relation between active field type and customizable type.
-
#customizable_types_for(field_type_name) ⇒ Object
Returns customizable types that allow provided active field type name.
-
#field_type_names_for(customizable_type) ⇒ Object
Returns active field type names, allowed for given customizable type.
-
#initialize ⇒ Registry
constructor
A new instance of Registry.
Constructor Details
#initialize ⇒ Registry
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 |