Module: Girb::Tools

Defined in:
lib/girb/tools.rb,
lib/girb/tools/base.rb,
lib/girb/tools/find_file.rb,
lib/girb/tools/read_file.rb,
lib/girb/tools/get_source.rb,
lib/girb/tools/rails_tools.rb,
lib/girb/tools/list_methods.rb,
lib/girb/tools/evaluate_code.rb,
lib/girb/tools/inspect_object.rb,
lib/girb/tools/continue_analysis.rb,
lib/girb/tools/environment_tools.rb,
lib/girb/tools/run_debug_command.rb,
lib/girb/tools/session_history_tool.rb,
lib/girb/tools/run_irb_debug_command.rb,
lib/girb/tools/debug_session_history_tool.rb

Defined Under Namespace

Classes: Base, ContinueAnalysis, DebugSessionHistoryTool, EvaluateCode, FindFile, GetCurrentDirectory, GetSource, InspectObject, ListMethods, RailsModelInfo, RailsProjectInfo, ReadFile, RunDebugCommand, RunIrbDebugCommand, SessionHistoryTool

Constant Summary collapse

SHARED_TOOLS =

Shared tools available in both IRB and debug modes

[InspectObject, GetSource, ListMethods, EvaluateCode, ReadFile, FindFile, GetCurrentDirectory].freeze
IRB_TOOLS =

IRB-only tools

[SessionHistoryTool, ContinueAnalysis, RunIrbDebugCommand].freeze
DEBUG_TOOLS =

Debug-only tools (RunDebugCommand is registered separately in DebugIntegration)

[DebugSessionHistoryTool].freeze
CORE_TOOLS =

All core tools (used for backward compatibility)

(SHARED_TOOLS + IRB_TOOLS + DEBUG_TOOLS).freeze

Class Method Summary collapse

Class Method Details

.available_toolsObject



39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/girb/tools.rb', line 39

def available_tools
  tools = CORE_TOOLS.dup + registered_tools

  # Rails tools are loaded conditionally
  if defined?(Rails)
    require_relative "tools/rails_tools"
    tools << RailsProjectInfo
    tools << RailsModelInfo if defined?(ActiveRecord::Base)
  end

  tools.select { |t| !t.respond_to?(:available?) || t.available? }
end

.find_tool(name) ⇒ Object



52
53
54
# File 'lib/girb/tools.rb', line 52

def find_tool(name)
  available_tools.find { |t| t.tool_name == name }
end

.register(tool_class) ⇒ Object



35
36
37
# File 'lib/girb/tools.rb', line 35

def register(tool_class)
  registered_tools << tool_class unless registered_tools.include?(tool_class)
end

.registered_toolsObject



31
32
33
# File 'lib/girb/tools.rb', line 31

def registered_tools
  @registered_tools ||= []
end

.to_gemini_toolsObject



56
57
58
# File 'lib/girb/tools.rb', line 56

def to_gemini_tools
  available_tools.map(&:to_gemini_tool)
end