class Provider
Expands static, dynamic, and native completion providers.
Definitions
def initialize(context, completions)
Initialize a new completion provider.
Signature
-
parameter
contextContext The completion context.
-
parameter
completionsArray | Proc | Symbol | Nil The static, dynamic, or native completions.
Implementation
def initialize(context, completions)
@context = context
@completions = completions
end
def suggestions
Generate suggestions from the provider.
Signature
-
returns
Result The matching completion suggestions.
Implementation
def suggestions
case @completions
when nil
Result.new
when Symbol
native_suggestions
else
matching_suggestions
end
end
def matching_suggestions
Generate matching suggestions from static or dynamic completions.
Signature
-
returns
Result The matching completion suggestions.
Implementation
def matching_suggestions
values = @completions
if values.respond_to?(:call)
values = values.call(@context)
end
values = Array(values).filter_map do |value|
suggestion = Suggestion.wrap(value)
suggestion if suggestion.start_with?(@context.current)
end
return Result.new(values)
end
def native_suggestions
Generate native shell completion requests.
Signature
-
returns
Result The native completion request suggestions.
Implementation
def native_suggestions
case @completions
when :path, :file
Result.new([Suggestion.new(@context.current, description: "Path", type: :path)])
when :directory
Result.new([Suggestion.new(@context.current, description: "Directory", type: :directory)])
when :executable
Result.new([Suggestion.new(@context.current, description: "Executable", type: :executable)])
else
Result.new
end
end