Class: SimpleScripting::TabCompletion
- Inherits:
-
Object
- Object
- SimpleScripting::TabCompletion
- Defined in:
- lib/simple_scripting/tab_completion.rb,
lib/simple_scripting/tab_completion/commandline_processor.rb
Overview
The naming of each of the the commandline units is not standard, therefore we establish the following arbitrary, but consistent, naming:
executable --option option_parameter argument
The commandline is divided into words, as Bash would split them. All the words, except the executable, compose an array that we call argv (as Ruby would do).
We define each name => value or name => value as pair.
In the context of a pair, each pair is composed of a key and a value.
Defined Under Namespace
Classes: CommandlineProcessor
Instance Method Summary collapse
-
#complete(execution_target, source_commandline = ENV.fetch('COMP_LINE'), cursor_position = ENV.fetch('COMP_POINT').to_i) ⇒ Object
Currently, any completion suffix is ignored and stripped.
-
#initialize(switches_definition, output: $stdout) ⇒ TabCompletion
constructor
A new instance of TabCompletion.
Constructor Details
#initialize(switches_definition, output: $stdout) ⇒ TabCompletion
Returns a new instance of TabCompletion.
21 22 23 24 |
# File 'lib/simple_scripting/tab_completion.rb', line 21 def initialize(switches_definition, output: $stdout) @switches_definition = switches_definition @output = output end |
Instance Method Details
#complete(execution_target, source_commandline = ENV.fetch('COMP_LINE'), cursor_position = ENV.fetch('COMP_POINT').to_i) ⇒ Object
Currently, any completion suffix is ignored and stripped.
28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/simple_scripting/tab_completion.rb', line 28 def complete(execution_target, source_commandline=ENV.fetch('COMP_LINE'), cursor_position=ENV.fetch('COMP_POINT').to_i) commandline_processor = CommandlineProcessor.process_commandline(source_commandline, cursor_position, @switches_definition) if commandline_processor.completing_an_option? complete_option(commandline_processor, execution_target) elsif commandline_processor.parsing_error? return else # completing_a_value? complete_value(commandline_processor, execution_target) end end |