module Glipper::Descedants::ClassMethods
Public Instance Methods
decorates(*object_classes)
click to toggle source
# File lib/glipper/descedants.rb, line 65 def decorates(*object_classes) @object_classes = object_classes end
descendant_file_mask()
click to toggle source
# File lib/glipper/descedants.rb, line 57 def descendant_file_mask '*_glipper.rb' end
descendant_files()
click to toggle source
# File lib/glipper/descedants.rb, line 45 def descendant_files Dir[descendant_path] end
descendant_folder_name()
click to toggle source
# File lib/glipper/descedants.rb, line 53 def descendant_folder_name 'glippers' end
descendant_path()
click to toggle source
# File lib/glipper/descedants.rb, line 61 def descendant_path descendant_root.join('**', descendant_file_mask) end
descendant_root()
click to toggle source
# File lib/glipper/descedants.rb, line 49 def descendant_root engine_root.join('app', descendant_folder_name) end
descendants()
click to toggle source
# File lib/glipper/descedants.rb, line 6 def descendants descendant_files .map { |i| Pathname.new(i).relative_path_from(descendant_root) } .map(&:to_s) .map { |i| i.gsub(/\.rb\z/, '') } .map(&:classify) .map(&:constantize) .select { |k| k < self } + [self] end
descendants_with_targets()
click to toggle source
# File lib/glipper/descedants.rb, line 16 def descendants_with_targets result = [] self.descendants.each do |d| d.object_classes.each do |object_class| result.push [object_class, d] end end Hash[result] end
engine_root()
click to toggle source
# File lib/glipper/descedants.rb, line 41 def engine_root Rails.root end
find_drapper_for(resource)
click to toggle source
# File lib/glipper/descedants.rb, line 28 def find_drapper_for(resource) object_klasses = ->(klass) { return [klass] if self.root_classes.include? klass Array.wrap(klass) + object_klasses[klass.superclass] } key = object_klasses[resource.class].find { |klass| self.descendants_with_targets.key?(klass) } self.descendants_with_targets[key] end
object_classes()
click to toggle source
# File lib/glipper/descedants.rb, line 69 def object_classes @object_classes end
root_classes()
click to toggle source
# File lib/glipper/descedants.rb, line 37 def root_classes [ActiveRecord::Base, ActiveRecord::Relation, Array] end