class Wallaby::Map
All the lookups that Wallaby
needs.
Attributes
@!attribute [w] modes
Public Class Methods
Reset all the instance variables to nil
# File lib/wallaby/map.rb, line 138 def clear instance_variables.each { |name| instance_variable_set name, nil } end
Look up which controller to use for a given model class @param model_class [Class] @param application_controller [Class, nil] @return [Class] controller class, default to `mapping.resources_controller`
# File lib/wallaby/map.rb, line 56 def controller_map(model_class, application_controller = nil) application_controller ||= mapping.resources_controller map_of :@controller_map, model_class, application_controller end
@return [Wallaby::ClassHash] { Model Class => {Wallaby::Mode} }
# File lib/wallaby/map.rb, line 19 def mode_map @mode_map ||= ModeMapper.execute(modes).freeze end
{ resources name => model } It's a setter when value is given. Otherwise, a getter. @param resources_name [String] @return [Class]
# File lib/wallaby/map.rb, line 45 def model_class_map(resources_name, value = nil) @model_class_map ||= ClassHash.new @model_class_map[resources_name] ||= value || ModelUtils.to_model_class(resources_name) end
TODO: remove this method @return [Array] [ model classes ]
# File lib/wallaby/map.rb, line 25 def model_classes ModelClassCollector.new(configuration, mode_map.keys).collect end
{ model => model decorator } @param model_class [Class] @param application_decorator [Class, nil] @return [Wallaby::ModelDecorator] model decorator instance
# File lib/wallaby/map.rb, line 74 def model_decorator_map(model_class, application_decorator = nil) application_decorator ||= mapping.resource_decorator @model_decorator_map ||= ClassHash.new @model_decorator_map[application_decorator] ||= ClassHash.new @model_decorator_map[application_decorator][model_class] ||= mode_map[model_class].try(:model_decorator).try :new, model_class end
@!attribute [r] modes @return [Array<String>] all {Wallaby::Mode}s
# File lib/wallaby/map.rb, line 14 def modes @modes ||= ClassArray.new Mode.descendants end
{ model => pagination_provider } @param model_class [Class] @return [Class] model pagination provider class
# File lib/wallaby/map.rb, line 122 def pagination_provider_map(model_class) @pagination_provider_map ||= ClassHash.new @pagination_provider_map[model_class] ||= mode_map[model_class].try :model_pagination_provider end
Look up which paginator to use for a given model class @param model_class [Class] @param application_paginator [Class, nil] @return [Class] resource paginator class, default to `mapping.model_paginator`
# File lib/wallaby/map.rb, line 95 def paginator_map(model_class, application_paginator = nil) application_paginator ||= mapping.model_paginator map_of :@paginator_map, model_class, application_paginator end
Look up which resource decorator to use for a given model class @param model_class [Class] @param application_decorator [Class, nil] @return [Class] resource decorator class, default to `mapping.resource_decorator`
# File lib/wallaby/map.rb, line 65 def resource_decorator_map(model_class, application_decorator = nil) application_decorator ||= mapping.resource_decorator map_of :@resource_decorator_map, model_class, application_decorator end
{ model => resources name } It's a setter when value is given. Otherwise, a getter. @param model_class [Class] @param value [String, nil] resources name @return [String] resources name
# File lib/wallaby/map.rb, line 35 def resources_name_map(model_class, value = nil) @resources_name_map ||= ClassHash.new @resources_name_map[model_class] ||= value || ModelUtils.to_resources_name(model_class) end
{ model => service_provider } @param model_class [Class] @return [Class] model service provider instance
# File lib/wallaby/map.rb, line 114 def service_provider_map(model_class) @service_provider_map ||= ClassHash.new @service_provider_map[model_class] ||= mode_map[model_class].try :model_service_provider end
Look up which model servicer to use for a given model class @param model_class [Class] @param application_servicer [Class, nil] @return [Class] model servicer class, default to `mapping.model_servicer`
# File lib/wallaby/map.rb, line 86 def servicer_map(model_class, application_servicer = nil) application_servicer ||= mapping.model_servicer map_of :@servicer_map, model_class, application_servicer end
Private Class Methods
shorthand method
# File lib/wallaby/map.rb, line 145 def configuration ::Wallaby.configuration end
Set up the hash map for given variable name @param variable_name [Symbol] instance variable name e.g. :@decorator_map @param model_class [Class] @param application_class [Class] @return [Class]
# File lib/wallaby/map.rb, line 159 def map_of(variable_name, model_class, application_class) return unless model_class unless mode_map[model_class] Logger.warn Locale.t('map.missing_mode_for_model_class', model: model_class.name), sourcing: 2..5 return end instance_variable_set(variable_name, instance_variable_get(variable_name) || ClassHash.new) map = instance_variable_get variable_name map[application_class] ||= ModelClassMapper.map application_class.descendants map[application_class][model_class] ||= application_class end
shorthand method
# File lib/wallaby/map.rb, line 150 def mapping configuration.mapping end