Class: Toys::Completion::Context

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

Overview

Defined in the toys-core gem

The context in which to determine completion candidates.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(cli:, previous_words: [], fragment_prefix: "", fragment: "", **params) ⇒ Context

Create a completion context

Parameters:

  • cli (Toys::CLI)

    The CLI being run. Required.

  • previous_words (Array<String>) (defaults to: [])

    Array of complete strings that appeared prior to the fragment to complete.

  • fragment_prefix (String) (defaults to: "")

    A prefix in the fragment that does not participate in completion. (e.g. "key=")

  • fragment (String) (defaults to: "")

    The string fragment to complete.

  • params (Hash)

    Miscellaneous context data



34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'toys-core/lib/toys/completion.rb', line 34

def initialize(cli:, previous_words: [], fragment_prefix: "", fragment: "", **params)
  @cli = cli
  @previous_words = previous_words
  @fragment_prefix = fragment_prefix
  @fragment = fragment
  extra_params = {
    cli: cli, previous_words: previous_words, fragment_prefix: fragment_prefix,
    fragment: fragment
  }
  @params = params.merge(extra_params)
  @tool = nil
  @args = nil
  @arg_parser = nil
end

Instance Attribute Details

#cliToys::CLI (readonly)

The CLI being run.

Returns:



63
64
65
# File 'toys-core/lib/toys/completion.rb', line 63

def cli
  @cli
end

#fragmentString (readonly)

The current string fragment to complete

Returns:

  • (String)


81
82
83
# File 'toys-core/lib/toys/completion.rb', line 81

def fragment
  @fragment
end

#fragment_prefixString (readonly)

A non-completed prefix for the current fragment.

Returns:

  • (String)


75
76
77
# File 'toys-core/lib/toys/completion.rb', line 75

def fragment_prefix
  @fragment_prefix
end

#previous_wordsArray<String> (readonly)

All previous words.

Returns:

  • (Array<String>)


69
70
71
# File 'toys-core/lib/toys/completion.rb', line 69

def previous_words
  @previous_words
end

Instance Method Details

#[](key) ⇒ Object Also known as: get

Get data for arbitrary key.

Parameters:

  • key (Symbol)

Returns:

  • (Object)


88
89
90
# File 'toys-core/lib/toys/completion.rb', line 88

def [](key)
  @params[key]
end

#arg_parserToys::ArgParser

Current ArgParser indicating the status of argument parsing up to this point.

Returns:



118
119
120
121
# File 'toys-core/lib/toys/completion.rb', line 118

def arg_parser
  lookup_tool
  @arg_parser ||= ArgParser.new(@cli, @tool).parse(@args)
end

#argsArray<String>

An array of complete arguments passed to the tool, prior to the fragment to complete.

Returns:

  • (Array<String>)


107
108
109
110
# File 'toys-core/lib/toys/completion.rb', line 107

def args
  lookup_tool
  @args
end

#toolToys::ToolDefinition

The tool being invoked, which should control the completion.



97
98
99
100
# File 'toys-core/lib/toys/completion.rb', line 97

def tool
  lookup_tool
  @tool
end

#with(**delta_params) ⇒ Toys::Completion::Context

Create a new completion context with the given modifications.

Parameters:

  • delta_params (Hash)

    Replace context data.

Returns:



55
56
57
# File 'toys-core/lib/toys/completion.rb', line 55

def with(**delta_params)
  Context.new(**@params.merge(delta_params))
end