lib/services/wallaby/map.rb in wallaby-5.1.5 vs lib/services/wallaby/map.rb in wallaby-5.1.6
- old
+ new
@@ -1,90 +1,128 @@
module Wallaby
- # Global storage of all the maps for model classes
+ # @private
+ # Global mappings
class Map
- # { model => mode }
- def self.mode_map
- @mode_map ||= ModeMapper.new(Mode.descendants).map.freeze
- end
+ class << self
+ # { model => mode }
+ # @return [Hash] { model => mode }
+ def mode_map
+ @mode_map ||= ModeMapper.new(Mode.descendants).map.freeze
+ end
- # [ model classes ]
- def self.model_classes
- @model_classes ||=
- ModelClassCollector.new(::Wallaby.configuration).collect.freeze
- end
+ # @return [Array] [ model classes ]
+ def model_classes
+ @model_classes ||= ModelClassCollector.new(configuration).collect.freeze
+ end
- # { model => controller }
- def self.controller_map(model_class)
- @controller_map ||= ModelClassMapper.new(ResourcesController).map
- @controller_map[model_class] ||= ResourcesController
- end
+ # { model => controller }
+ # @param model_class [Class]
+ # @return [Class] controller class
+ # default to `mapping.resources_controller`
+ def controller_map(model_class)
+ @controller_map ||=
+ ModelClassMapper.new(mapping.resources_controller).map
+ @controller_map[model_class] ||= mapping.resources_controller
+ end
- # { model => model decorator }
- def self.model_decorator_map(model_class)
- @model_decorator_map ||= {}
- @model_decorator_map[model_class] ||= begin
- mode = mode_map[model_class]
- mode.model_decorator.new model_class if mode
+ # { model => model decorator }
+ # @param model_class [Class]
+ # @return [Wallaby::ModelDecorator] model decorator instance
+ def model_decorator_map(model_class)
+ @model_decorator_map ||= {}
+ @model_decorator_map[model_class] ||= begin
+ mode = mode_map[model_class]
+ mode.model_decorator.new model_class if mode # rubocop:disable Style/SafeNavigation, Metrics/LineLength
+ end
end
- end
- # { model => resource decorator }
- def self.resource_decorator_map(model_class)
- @resource_decorator_map ||= ModelClassMapper.new(ResourceDecorator).map
- @resource_decorator_map[model_class] ||= begin
- ResourceDecorator if mode_map[model_class]
+ # { model => resource decorator }
+ # @param model_class [Class]
+ # @return [Class] resource decorator class
+ # default to `mapping.resource_decorator`
+ def resource_decorator_map(model_class)
+ @resource_decorator_map ||=
+ ModelClassMapper.new(mapping.resource_decorator).map
+ @resource_decorator_map[model_class] ||= begin
+ mapping.resource_decorator if mode_map[model_class]
+ end
end
- end
- # { model => servicer }
- def self.servicer_map(model_class)
- @servicer_map ||= ModelClassMapper.new(ModelServicer).map
- @servicer_map[model_class] ||= begin
- ModelServicer if mode_map[model_class]
+ # { model => servicer }
+ # @param model_class [Class]
+ # @return [Class] resource servicer class
+ # default to `mapping.resource_servicer`
+ def servicer_map(model_class)
+ @servicer_map ||= ModelClassMapper.new(mapping.model_servicer).map
+ @servicer_map[model_class] ||= begin
+ mapping.model_servicer if mode_map[model_class]
+ end
end
- end
- # { model => service_provider }
- def self.service_provider_map(model_class)
- @service_provider_map ||= {}
- @service_provider_map[model_class] ||= begin
- mode = mode_map[model_class]
- mode.model_service_provider.new model_class if mode
+ # { model => service_provider }
+ # @param model_class [Class]
+ # @return [Wallaby::ModelServiceProvider] model service provider instance
+ def service_provider_map(model_class)
+ @service_provider_map ||= {}
+ @service_provider_map[model_class] ||= begin
+ mode = mode_map[model_class]
+ mode.model_service_provider.new model_class if mode # rubocop:disable Style/SafeNavigation, Metrics/LineLength
+ end
end
- end
- # { model => paginator }
- def self.paginator_map(model_class)
- @paginator_map ||= ModelClassMapper.new(ResourcePaginator).map
- @paginator_map[model_class] ||= begin
- ResourcePaginator if mode_map[model_class]
+ # { model => paginator }
+ # @param model_class [Class]
+ # @return [Hash] { model => paginator }
+ def paginator_map(model_class)
+ @paginator_map ||= ModelClassMapper.new(mapping.resource_paginator).map
+ @paginator_map[model_class] ||= begin
+ mapping.resource_paginator if mode_map[model_class]
+ end
end
- end
- # { model => pagination_provider }
- def self.pagination_provider_map(model_class)
- @pagination_provider_map ||= {}
- @pagination_provider_map[model_class] ||=
- mode_map[model_class].try(:model_pagination_provider)
- end
+ # { model => pagination_provider }
+ # @param model_class [Class]
+ # @return [Class] model pagination provider class
+ def pagination_provider_map(model_class)
+ @pagination_provider_map ||= {}
+ @pagination_provider_map[model_class] ||=
+ mode_map[model_class].try(:model_pagination_provider)
+ end
- # { model => resources name }
- def self.resources_name_map(model_class)
- @resources_name_map ||= {}
- @resources_name_map[model_class] ||= Utils.to_resources_name model_class
- end
+ # { model => resources name }
+ # @param model_class [Class]
+ # @return [String] resources name
+ def resources_name_map(model_class)
+ @resources_name_map ||= {}
+ @resources_name_map[model_class] ||= Utils.to_resources_name model_class
+ end
- # { resources name => model }
- def self.model_class_map(resources_name)
- @model_class_map ||= {}
- @model_class_map[resources_name] ||= Utils.to_model_class resources_name
- end
+ # { resources name => model }
+ # @param resources_name [String]
+ # @return [Class] model class
+ def model_class_map(resources_name)
+ @model_class_map ||= {}
+ @model_class_map[resources_name] ||= Utils.to_model_class resources_name
+ end
- # Clear all the class variables to nil
- def self.clear
- @mode_map, @model_classes, @controller_map, @model_decorator_map,
- @resource_decorator_map, @servicer_map, @service_provider_map,
- @paginator_map, @pagination_provider_map, @model_class_map,
- @resources_name_map = []
+ # Clear all the class variables to nil
+ def clear
+ @mode_map, @model_classes, @controller_map, @model_decorator_map,
+ @resource_decorator_map, @servicer_map, @service_provider_map,
+ @paginator_map, @pagination_provider_map, @model_class_map,
+ @resources_name_map = []
+ end
+
+ private
+
+ # shorthand method
+ def configuration
+ ::Wallaby.configuration
+ end
+
+ # shorthand method
+ def mapping
+ configuration.mapping
+ end
end
end
end