Spec-Zone.ru › Homebrew

Класс: Debrew::Menu Приватный

Наследует:
Object
  • Object
  • Debrew::Menu
показать всё
Определён в:
debrew.rb

Обзор

Этот класс является частью приватного API. Этот класс можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого класса, так как он может быть удалён или изменён без предупреждения.

Модуль для отображения меню отладки.

Определено в пространстве имён

Классы: Entry

Краткое описание атрибутов экземпляра свернуть

  • #entries ⇒ Array<Entry> приватный
  • #prompt ⇒ String? приватный

Краткое описание методов класса свернуть

  • .choose(&_block) {|menu| ... } ⇒ void приватный

Краткое описание методов экземпляра свернуть

  • #choice(name, &action) ⇒ void приватный
  • #initialize ⇒ void конструктор приватный

Подробное описание конструкторов

#initialize ⇒ void

Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.



43
44
45
# File 'debrew.rb', line 43

def initialize
  @entries = T.let([], T::Array[Entry])
end

Подробное описание атрибутов экземпляра

#entries ⇒ Array<Entry>

Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Array<Entry>)


40
41
42
# File 'debrew.rb', line 40

def entries
  @entries
end

#prompt ⇒ String?

Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.

Возвращает:

  • (String, nil)


37
38
39
# File 'debrew.rb', line 37

def prompt
  @prompt
end

Подробное описание методов класса

.choose(&_block) {|menu| ... } ⇒ void

Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.

Этот метод не возвращает определённого значения.

Параметры:

  • _block (T.proc.params(menu: Menu).void)

Передаёт значения блоку:

  • (menu)


53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'debrew.rb', line 53

def self.choose(&_block)
  menu = new
  yield menu

  choice = T.let(nil, T.nilable(Entry))
  while choice.nil?
    menu.entries.each_with_index { |e, i| puts "#{i + 1}. #{e.name}" }
    print menu.prompt unless menu.prompt.nil?

    input = $stdin.gets || exit
    input.chomp!

    i = input.to_i
    if i.positive?
      choice = menu.entries[i - 1]
    else
      possible = menu.entries.select { |e| e.name.start_with?(input) }

      case possible.size
      when 0 then puts "No such option"
      when 1 then choice = possible.first
      else puts "Multiple options match: #{possible.map(&:name).join("")}"
      end
    end
  end

  choice.action.call
end

Подробное описание методов экземпляра

#choice(name, &action) ⇒ void

Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.

Этот метод не возвращает определённого значения.

Параметры:

  • name (Symbol)
  • action (T.proc.void)


48
49
50
# File 'debrew.rb', line 48

def choice(name, &action)
  entries << Entry.new(name: name.to_s, action:)
end

© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/rubydoc/Debrew/Menu.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API