Class: RailsAiBridge::Tools::SearchCode::RubySearch

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_ai_bridge/tools/search_code/ruby_search.rb

Overview

Executes codebase searches using Ruby fallback.

Defined Under Namespace

Classes: FileProcessor, SearchParams

Instance Method Summary collapse

Constructor Details

#initialize(search_params) ⇒ RubySearch

Returns a new instance of RubySearch.

Parameters:

  • search_params (Hash)

    validated search parameters (+:pattern+, +:search_path+, +:file_type+, +:max_results+, +:root+)



69
70
71
# File 'lib/rails_ai_bridge/tools/search_code/ruby_search.rb', line 69

def initialize(search_params)
  @params = SearchParams.new(**search_params.slice(:pattern, :search_path, :file_type, :max_results, :root))
end

Instance Method Details

#callObject



73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/rails_ai_bridge/tools/search_code/ruby_search.rb', line 73

def call
  results = []
  regex = Regexp.new(@params.pattern, Regexp::IGNORECASE, timeout: 2)
  processor = FileProcessor.new(regex, results, @params.max_results, @params.root)

  Dir.glob(ruby_glob).each do |file|
    break if processor.process(file) == :full
  rescue StandardError
    next
  end
  results
rescue RegexpError => error
  [{ file: 'error', line_number: 0, content: "Invalid pattern: #{error.message}" }]
end