class GenericViewMapper::Registry

Constants

TRACKED_CLASSES

Attributes

data[R]

Public Class Methods

new() click to toggle source
# File lib/generic_view_mapper/registry.rb, line 12
def initialize
  @data = Hash.new { |h,k| h[k] = [] }
end

Public Instance Methods

[](val) click to toggle source
# File lib/generic_view_mapper/registry.rb, line 16
def [](val)
  @data[val]
end
register(*classes) click to toggle source
# File lib/generic_view_mapper/registry.rb, line 25
def register(*classes)
  classes.each do |klass|
    name = class_name_for(klass)
    @data[name] << [klass, ancestors_count_for(klass)]
  end
end
register_all() click to toggle source
# File lib/generic_view_mapper/registry.rb, line 36
def register_all
  TRACKED_CLASSES.each do |klass|
    klass.descendants.each { |k| register(k) }
  end
end
registered?(klass) click to toggle source
# File lib/generic_view_mapper/registry.rb, line 32
def registered?(klass)
  @data.any? { |(_,k)| k.map(&:first).include?(klass) }
end
reload() click to toggle source
# File lib/generic_view_mapper/registry.rb, line 20
def reload
  data.clear
  register_all
end

Private Instance Methods

ancestors_count_for(klass) click to toggle source
# File lib/generic_view_mapper/registry.rb, line 56
def ancestors_count_for(klass)
  klass
    .ancestors
    .reverse
    .drop_while { |x| !TRACKED_CLASSES.include?(x) }
    .count
end
class_name_for(klass) click to toggle source
# File lib/generic_view_mapper/registry.rb, line 44
def class_name_for(klass)
  klass
    .ancestors
    .find { |x| TRACKED_CLASSES.include?(x) }
    .name
    .underscore
    .split('/')
    .last
    .pluralize
    .to_sym
end