Class: Toys::Completion::Context

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

Overview

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



30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/toys/completion.rb', line 30

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:



59
60
61
# File 'lib/toys/completion.rb', line 59

def cli
  @cli
end

#fragmentString (readonly)

The current string fragment to complete

Returns:

  • (String)


77
78
79
# File 'lib/toys/completion.rb', line 77

def fragment
  @fragment
end

#fragment_prefixString (readonly)

A non-completed prefix for the current fragment.

Returns:

  • (String)


71
72
73
# File 'lib/toys/completion.rb', line 71

def fragment_prefix
  @fragment_prefix
end

#previous_wordsArray<String> (readonly)

All previous words.

Returns:

  • (Array<String>)


65
66
67
# File 'lib/toys/completion.rb', line 65

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)


84
85
86
# File 'lib/toys/completion.rb', line 84

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

#arg_parserToys::ArgParser

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

Returns:



114
115
116
117
# File 'lib/toys/completion.rb', line 114

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>)


103
104
105
106
# File 'lib/toys/completion.rb', line 103

def args
  lookup_tool
  @args
end

#toolToys::ToolDefinition

The tool being invoked, which should control the completion.



93
94
95
96
# File 'lib/toys/completion.rb', line 93

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:



51
52
53
# File 'lib/toys/completion.rb', line 51

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