Class: Toys::Completion::Enum

Inherits:
Base
  • Object
show all
Defined in:
toys-core/lib/toys/completion.rb

Overview

Defined in the toys-core gem

A Completion whose candidates come from a static list of strings.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(values, prefix_constraint: "") ⇒ Enum

Create a completion from a list of values.

Parameters:

  • values (Array<String>)
  • prefix_constraint (String, Regexp) (defaults to: "")

    Constraint on the fragment prefix. Defaults to requiring the prefix be empty.



343
344
345
346
347
# File 'toys-core/lib/toys/completion.rb', line 343

def initialize(values, prefix_constraint: "")
  super()
  @values = values.flatten.map { |v| Candidate.new(v) }.sort
  @prefix_constraint = prefix_constraint
end

Instance Attribute Details

#prefix_constraintString, Regexp (readonly)

Constraint on the fragment prefix.

Returns:

  • (String, Regexp)


359
360
361
# File 'toys-core/lib/toys/completion.rb', line 359

def prefix_constraint
  @prefix_constraint
end

#valuesArray<String> (readonly)

The array of completion candidates.

Returns:

  • (Array<String>)


353
354
355
# File 'toys-core/lib/toys/completion.rb', line 353

def values
  @values
end

Instance Method Details

#call(context) ⇒ Array<Toys::Completion::Candidate>

Returns candidates for the current completion.

Parameters:

Returns:



368
369
370
371
372
# File 'toys-core/lib/toys/completion.rb', line 368

def call(context)
  return [] unless @prefix_constraint === context.fragment_prefix
  fragment = context.fragment
  @values.find_all { |val| val.string.start_with?(fragment) }
end