Class: Toys::ToolDefinition::DefaultCompletion
- Inherits:
 - 
      Completion::Base
      
        
- Object
 - Completion::Base
 - Toys::ToolDefinition::DefaultCompletion
 
 
- Defined in:
 - lib/toys/tool_definition.rb
 
Overview
A Completion that implements the default algorithm for a tool.
Instance Attribute Summary collapse
- 
  
    
      #delegation_target  ⇒ Array<String>? 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    
Delegation target, or nil for none.
 
Instance Method Summary collapse
- 
  
    
      #call(context)  ⇒ Array<Toys::Completion::Candidate> 
    
    
  
  
  
  
  
  
  
  
  
    
Returns candidates for the current completion.
 - 
  
    
      #complete_args?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
Whether to complete positional args.
 - 
  
    
      #complete_flag_values?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
Whether to complete flag values.
 - 
  
    
      #complete_flags?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
Whether to complete flags.
 - 
  
    
      #complete_subtools?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
Whether to complete subtool names.
 - 
  
    
      #include_hidden_subtools?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
Whether to include hidden subtools.
 - 
  
    
      #initialize(complete_subtools: true, include_hidden_subtools: false, complete_args: true, complete_flags: true, complete_flag_values: true, delegation_target: nil)  ⇒ DefaultCompletion 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    
Create a completion given configuration options.
 
Constructor Details
#initialize(complete_subtools: true, include_hidden_subtools: false, complete_args: true, complete_flags: true, complete_flag_values: true, delegation_target: nil) ⇒ DefaultCompletion
Create a completion given configuration options.
      30 31 32 33 34 35 36 37 38 39 40  | 
    
      # File 'lib/toys/tool_definition.rb', line 30 def initialize(complete_subtools: true, include_hidden_subtools: false, complete_args: true, complete_flags: true, complete_flag_values: true, delegation_target: nil) super() @complete_subtools = complete_subtools @include_hidden_subtools = include_hidden_subtools @complete_flags = complete_flags @complete_args = complete_args @complete_flag_values = complete_flag_values @delegation_target = delegation_target end  | 
  
Instance Attribute Details
#delegation_target ⇒ Array<String>?
Delegation target, or nil for none.
      87 88 89  | 
    
      # File 'lib/toys/tool_definition.rb', line 87 def delegation_target @delegation_target end  | 
  
Instance Method Details
#call(context) ⇒ Array<Toys::Completion::Candidate>
Returns candidates for the current completion.
      96 97 98 99 100 101 102 103 104 105 106 107 108 109 110  | 
    
      # File 'lib/toys/tool_definition.rb', line 96 def call(context) candidates = valued_flag_candidates(context) return candidates if candidates candidates = subtool_or_arg_candidates(context) candidates += plain_flag_candidates(context) candidates += flag_value_candidates(context) if delegation_target delegate_tool = context.cli.loader.lookup_specific(delegation_target) if delegate_tool context = context.with(previous_words: delegation_target) candidates += delegate_tool.completion.call(context) end end candidates end  | 
  
#complete_args? ⇒ Boolean
Whether to complete positional args
      70 71 72  | 
    
      # File 'lib/toys/tool_definition.rb', line 70 def complete_args? @complete_args end  | 
  
#complete_flag_values? ⇒ Boolean
Whether to complete flag values
      78 79 80  | 
    
      # File 'lib/toys/tool_definition.rb', line 78 def complete_flag_values? @complete_flag_values end  | 
  
#complete_flags? ⇒ Boolean
Whether to complete flags
      62 63 64  | 
    
      # File 'lib/toys/tool_definition.rb', line 62 def complete_flags? @complete_flags end  | 
  
#complete_subtools? ⇒ Boolean
Whether to complete subtool names
      46 47 48  | 
    
      # File 'lib/toys/tool_definition.rb', line 46 def complete_subtools? @complete_subtools end  | 
  
#include_hidden_subtools? ⇒ Boolean
Whether to include hidden subtools
      54 55 56  | 
    
      # File 'lib/toys/tool_definition.rb', line 54 def include_hidden_subtools? @include_hidden_subtools end  |