class Gem::StreamUI
Gem::StreamUI implementiert eine einfache Stream-basierte Benutzeroberfläche.
Attribute
Der Fehlerstrom
Der Eingabestrom
Der Ausgabestrom
Öffentliche Klassenmethoden
Source
# File lib/rubygems/user_interaction.rb, line 193 def initialize(in_stream, out_stream, err_stream = $stderr, usetty = true) @ins = in_stream @outs = out_stream @errs = err_stream @usetty = usetty end
Erstellt eine neue StreamUI, die in_stream für Benutzereingaben, out_stream für Standardausgabe und err_stream für Fehlerausgabe umschließt. Wenn usetty true ist, verwenden spezielle Operationen (wie Passwortabfragen) TTY-Befehle, um die Zeichenausgabe zu deaktivieren.
Öffentliche Instanzmethoden
Source
# File lib/rubygems/user_interaction.rb, line 317 def _gets_noecho require_io_console @ins.noecho { @ins.gets } end
Source
# File lib/rubygems/user_interaction.rb, line 332 def alert(statement, question = nil) @outs.puts "INFO: #{statement}" ask(question) if question end
Zeigt eine informative Benachrichtigung an. Fragt nach question, wenn diese nicht nil ist.
Source
# File lib/rubygems/user_interaction.rb, line 349 def alert_error(statement, question = nil) @errs.puts "ERROR: #{statement}" ask(question) if question end
Zeigt eine Fehlermeldung an einer Stelle an, an der Fehlermeldungen erwartet werden. Fragt nach question, wenn diese nicht nil ist.
Source
# File lib/rubygems/user_interaction.rb, line 340 def alert_warning(statement, question = nil) @errs.puts "WARNING: #{statement}" ask(question) if question end
Zeigt eine Warnung auf stderr an. Fragt nach question, wenn diese nicht nil ist.
Source
# File lib/rubygems/user_interaction.rb, line 281 def ask(question) return nil unless tty? @outs.print(question + " ") @outs.flush result = @ins.gets result&.chomp! result end
Stellt eine Frage. Gibt eine Antwort zurück, wenn mit einem TTY verbunden, andernfalls nil.
Source
# File lib/rubygems/user_interaction.rb, line 295 def ask_for_password(question) return nil unless tty? @outs.print(question, " ") @outs.flush password = _gets_noecho @outs.puts password&.chomp! password end
Fragt nach einem Passwort. Gibt die Antwort nicht auf dem Terminal aus.
Source
# File lib/rubygems/user_interaction.rb, line 246 def ask_yes_no(question, default = nil) unless tty? if default.nil? raise Gem::OperationNotSupportedError, "Not connected to a tty and no default specified" else return default end end default_answer = case default when nil "yn" when true "Yn" else "yN" end result = nil while result.nil? do result = case ask "#{question} [#{default_answer}]" when /^y/i then true when /^n/i then false when /^$/ then default end end result end
Stellt eine Frage. Gibt true für Ja und false für Nein zurück. Wenn nicht mit einem TTY verbunden, wird eine Ausnahme ausgelöst, wenn default nil ist, andernfalls wird default zurückgegeben.
Source
# File lib/rubygems/user_interaction.rb, line 211 def backtrace(exception) return unless Gem.configuration.backtrace @errs.puts "\t#{exception.backtrace.join "\n\t"}" end
Gibt eine formatierte Rückverfolgung auf den Fehlerstrom aus, wenn Rückverfolgungen aktiviert sind.
Source
# File lib/rubygems/user_interaction.rb, line 222 def choose_from_list(question, list) @outs.puts question list.each_with_index do |item, index| @outs.puts " #{index + 1}. #{item}" end @outs.print "> " @outs.flush result = @ins.gets return nil, nil unless result result = result.strip.to_i - 1 return nil, nil unless (0...list.size) === result [list[result], result] end
Wählt aus einer Liste von Optionen aus. question ist eine Eingabeaufforderung, die über der Liste angezeigt wird. list ist eine Liste von Optionszeichenfolgen. Gibt das Paar [optionsname, optionsindex] zurück.
Source
# File lib/rubygems/user_interaction.rb, line 496 def download_reporter(*args) if [nil, false].include?(Gem.configuration.verbose) || !@outs.tty? SilentDownloadReporter.new(@outs, *args) else ThreadedDownloadReporter.new(@outs, *args) end end
Gibt ein Download-Reporter-Objekt zurück, das aus der aktuellen Ausführlichkeit ausgewählt wurde
Source
# File lib/rubygems/user_interaction.rb, line 369 def progress_reporter(*args) case Gem.configuration.verbose when nil, false SilentProgressReporter.new(@outs, *args) when true SimpleProgressReporter.new(@outs, *args) else VerboseProgressReporter.new(@outs, *args) end end
Gibt ein Fortschrittsreporter-Objekt zurück, das aus der aktuellen Ausführlichkeit ausgewählt wurde.
Source
# File lib/rubygems/user_interaction.rb, line 307 def require_io_console @require_io_console ||= begin begin require "io/console" rescue LoadError end true end end
Source
# File lib/rubygems/user_interaction.rb, line 325 def say(statement = "") @outs.puts statement end
Zeigt eine Aussage an.
Source
# File lib/rubygems/user_interaction.rb, line 358 def terminate_interaction(status = 0) close raise Gem::SystemExitException, status end
Beendet die Anwendung mit dem Exit-Code status und führt alle möglicherweise definierten Exit-Handler aus.