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
- .available_tools ⇒ Object
- .find_tool(name) ⇒ Object
- .register(tool_class) ⇒ Object
- .registered_tools ⇒ Object
- .to_gemini_tools ⇒ Object
Class Method Details
.available_tools ⇒ Object
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_tools ⇒ Object
31 32 33 |
# File 'lib/girb/tools.rb', line 31 def registered_tools @registered_tools ||= [] end |
.to_gemini_tools ⇒ Object
56 57 58 |
# File 'lib/girb/tools.rb', line 56 def to_gemini_tools available_tools.map(&:to_gemini_tool) end |