class TkInspect::ClassBrowser::ClassNamespaceDataSource

Attributes

class_filter[RW]

Public Instance Methods

items_for_path(path) click to toggle source
# File lib/tk_inspect/class_browser/class_namespace_data_source.rb, line 6
def items_for_path(path)
  path = [] if path.blank?
  namespace = path.join('::')
  classes = classes_in_namespace(namespace)
  class_names = classes
                  .map { |k| name_for_class(k).gsub(/^#{namespace}(::)?/, '').gsub(/::.*/, '') }
                  .reject { |class_name| class_name.blank? }
                  .uniq
                  .sort
  class_names
end
title_for_path(path, items) click to toggle source
# File lib/tk_inspect/class_browser/class_namespace_data_source.rb, line 18
def title_for_path(path, items)
  "#{items.count} #{'class'.pluralize(items.count)}"
end

Private Instance Methods

black_list?(k) click to toggle source
# File lib/tk_inspect/class_browser/class_namespace_data_source.rb, line 49
def black_list?(k)
  k.to_s.blank? || k.to_s.match(/^#<Class/) || !k.to_s.match(/^[A-Z]/)
end
classes_in_namespace(namespace) click to toggle source
# File lib/tk_inspect/class_browser/class_namespace_data_source.rb, line 24
def classes_in_namespace(namespace)
  filtered_classes.select do |k|
    name_for_class(k).match(/^#{namespace}/)
  end
end
filtered_classes() click to toggle source
# File lib/tk_inspect/class_browser/class_namespace_data_source.rb, line 30
def filtered_classes
  list = ObjectSpace.each_object(Class).select do |k|
    k.is_a?(Class) && !black_list?(k)
  end
  return list if @class_filter.blank?
  list.select! do |k|
    name_for_class(k).match(/#{@class_filter}/i)
  end
  ancestors = list.reduce(Set.new) do |acum, k|
    acum += name_for_class(k).split('::')
    acum
  end
  (list.to_set + ancestors).to_a
end
name_for_class(klass) click to toggle source
# File lib/tk_inspect/class_browser/class_namespace_data_source.rb, line 45
def name_for_class(klass)
  klass.to_s
end