class TkInspect::ClassBrowser::ClassTreeDataSource
Attributes
class_filter[RW]
Public Instance Methods
items_for_path(path)
click to toggle source
# File lib/tk_inspect/class_browser/class_tree_data_source.rb, line 6 def items_for_path(path) path = [] if path.blank? parent_class = path.last subclasses_of(parent_class).sort end
path_for_class(class_name)
click to toggle source
# File lib/tk_inspect/class_browser/class_tree_data_source.rb, line 16 def path_for_class(class_name) return unless (klass = Object.const_get(class_name)) path = [class_name] while (klass = klass.superclass) do path.unshift(name_for_class(klass)) end path end
title_for_path(path, items)
click to toggle source
# File lib/tk_inspect/class_browser/class_tree_data_source.rb, line 12 def title_for_path(path, items) "#{items.count} #{'class'.pluralize(items.count)}" end
Private Instance Methods
filtered_classes()
click to toggle source
# File lib/tk_inspect/class_browser/class_tree_data_source.rb, line 33 def filtered_classes list = ObjectSpace.each_object(Class).select do |k| !k.name.nil? end return list if @class_filter.blank? list.select! do |k| k.name.match(/#{@class_filter}/i) end ancestors = list.reduce(Set.new) do |acum, k| an = k while !(an = an.superclass).nil? do acum << an end acum end (list.to_set + ancestors).to_a end
name_for_class(klass)
click to toggle source
# File lib/tk_inspect/class_browser/class_tree_data_source.rb, line 51 def name_for_class(klass) klass.respond_to?(:name) ? klass.name : klass.to_s end
subclasses_of(class_name)
click to toggle source
# File lib/tk_inspect/class_browser/class_tree_data_source.rb, line 27 def subclasses_of(class_name) filtered_classes.select do |k| k.superclass&.to_s == class_name end.map { |k| name_for_class(k) } end