Class: TraceViz::Collectors::Filters::Registry

Inherits:
Object
  • Object
show all
Defined in:
lib/trace_viz/collectors/filters/registry.rb

Constant Summary collapse

FILTERS =
{
  include_classes: IncludeClassesFilter,
  include_gems: IncludeGemsFilter,
  exclude_internal_call: ExcludeInternalCallFilter,
  exclude_gems: ExcludeGemsFilter,
  exclude_rails_framework: ExcludeRailsFrameworkFilter,
  exclude_default_classes: ExcludeDefaultClassesFilter,
  exclude_classes: ExcludeClassesFilter,
}.freeze

Class Method Summary collapse

Class Method Details

.build(filters) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/trace_viz/collectors/filters/registry.rb', line 26

def build(filters)
  filters.each_with_object([]) do |filter, result|
    case filter
    when Symbol
      # Handle simple filters
      # (e.g., :depth, :exclude_internal_call)
      klass = fetch_filter_class(filter)
      result << klass.new
    when Hash
      # Handle complex filters with options
      # (e.g., { include_classes: { classes: [Example] } })
      filter.each do |filter_key, options|
        klass = fetch_filter_class(filter_key)
        result << klass.new(**options)
      end
    else
      raise ArgumentError, "Invalid filter format: #{filter.inspect}"
    end
  end
end