Class: Tabry::Models::FlagsList

Inherits:
ConfigList show all
Defined in:
lib/tabry/models/flags_list.rb

Instance Attribute Summary

Attributes inherited from ConfigList

#unflattened

Instance Method Summary collapse

Methods inherited from ConfigList

#as_json, #each, #empty?, #flatten, #length, #to_a

Constructor Details

#initialize(**args) ⇒ FlagsList

Returns a new instance of FlagsList.



9
10
11
# File 'lib/tabry/models/flags_list.rb', line 9

def initialize(**args)
  super(**args, klass: Flag)
end

Instance Method Details

#[](flag_name) ⇒ Object



42
43
44
45
46
47
48
# File 'lib/tabry/models/flags_list.rb', line 42

def [](flag_name)
  if flag_name.is_a?(Integer)
    to_a[flag_name]
  else
    to_a.find { |f| f.name == flag_name }
  end
end

#first_required_flag(used:) ⇒ Object



13
14
15
16
17
# File 'lib/tabry/models/flags_list.rb', line 13

def first_required_flag(used:)
  to_a.find do |flag|
    flag.required && !used[flag.name]
  end
end

#match(token) ⇒ Object



31
32
33
34
35
36
37
38
39
40
# File 'lib/tabry/models/flags_list.rb', line 31

def match(token)
  to_a.each do |flag|
    if (arg_value = flag.match_with_value(token))
      return flag, arg_value
    elsif flag.match(token)
      return flag
    end
  end
  false
end

#options(token, params, used:) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
# File 'lib/tabry/models/flags_list.rb', line 19

def options(token, params, used:)
  to_a.map do |flag|
    if token&.start_with?("-") && flag.name_with_dashes.start_with?(token) && !used[flag.name]
      if params[:descriptions]
        [flag.name_with_dashes, flag.description]
      else
        flag.name_with_dashes
      end
    end
  end.compact
end