class Wallaby::Map

All the lookups that Wallaby needs.

Attributes

modes[W]

@!attribute [w] modes

Public Class Methods

authorizer_map(model_class, application_authorizer = nil) click to toggle source

Look up which authorizer to use for a given model class @param model_class [Class] @param application_authorizer [Class, nil] @return [Class] model authorizer class, default to `mapping.model_authorizer`

# File lib/wallaby/map.rb, line 104
def authorizer_map(model_class, application_authorizer = nil)
  application_authorizer ||= mapping.model_authorizer
  map_of :@authorizer_map, model_class, application_authorizer
end
authorizer_provider_map(model_class) click to toggle source

{ model => authorizer_provider } @param model_class [Class] @return [Class] model authorizer provider class

# File lib/wallaby/map.rb, line 130
def authorizer_provider_map(model_class)
  @authorizer_provider_map ||= ClassHash.new
  @authorizer_provider_map[model_class] ||= mode_map[model_class].try :model_authorization_providers
end
clear() click to toggle source

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
controller_map(model_class, application_controller = nil) click to toggle source

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
mode_map() click to toggle source

@return [Wallaby::ClassHash] { Model Class => {Wallaby::Mode} }

# File lib/wallaby/map.rb, line 19
def mode_map
  @mode_map ||= ModeMapper.execute(modes).freeze
end
model_class_map(resources_name, value = nil) click to toggle source

{ 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
model_classes() click to toggle source

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_decorator_map(model_class, application_decorator = nil) click to toggle source

{ 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
modes() click to toggle source

@!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
pagination_provider_map(model_class) click to toggle source

{ 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
paginator_map(model_class, application_paginator = nil) click to toggle source

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
resource_decorator_map(model_class, application_decorator = nil) click to toggle source

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
resources_name_map(model_class, value = nil) click to toggle source

{ 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
service_provider_map(model_class) click to toggle source

{ 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
servicer_map(model_class, application_servicer = nil) click to toggle source

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

configuration() click to toggle source

shorthand method

# File lib/wallaby/map.rb, line 145
def configuration
  ::Wallaby.configuration
end
map_of(variable_name, model_class, application_class) click to toggle source

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
mapping() click to toggle source

shorthand method

# File lib/wallaby/map.rb, line 150
def mapping
  configuration.mapping
end