Class Gem::StreamUI
In: lib/rubygems/user_interaction.rb
Parent: Object

StreamUI implements a simple stream based user interface.

Methods

Classes and Modules

Class Gem::StreamUI::SilentProgressReporter
Class Gem::StreamUI::SimpleProgressReporter
Class Gem::StreamUI::VerboseProgressReporter

Attributes

errs  [R] 
ins  [R] 
outs  [R] 

Public Class methods

[Source]

    # File lib/rubygems/user_interaction.rb, line 87
87:     def initialize(in_stream, out_stream, err_stream=STDERR)
88:       @ins = in_stream
89:       @outs = out_stream
90:       @errs = err_stream
91:     end

Public Instance methods

Display an informational alert.

[Source]

     # File lib/rubygems/user_interaction.rb, line 167
167:     def alert(statement, question=nil)
168:       @outs.puts "INFO:  #{statement}"
169:       return ask(question) if question 
170:     end

Display an error message in a location expected to get error messages.

[Source]

     # File lib/rubygems/user_interaction.rb, line 180
180:     def alert_error(statement, question=nil)
181:       @errs.puts "ERROR:  #{statement}"
182:       ask(question) if question
183:     end

Display a warning in a location expected to get error messages.

[Source]

     # File lib/rubygems/user_interaction.rb, line 173
173:     def alert_warning(statement, question=nil)
174:       @errs.puts "WARNING:  #{statement}"
175:       ask(question) if question 
176:     end

Ask a question. Returns an answer if connected to a tty, nil otherwise.

[Source]

     # File lib/rubygems/user_interaction.rb, line 152
152:     def ask(question)
153:       return nil if not @ins.tty?
154:       @outs.print(question + "  ")
155:       @outs.flush
156:       result = @ins.gets
157:       result.chomp! if result
158:       result
159:     end

Ask a question. Returns a true for yes, false for no. If not connected to a tty, raises an exception if default is nil, otherwise returns default.

[Source]

     # File lib/rubygems/user_interaction.rb, line 115
115:     def ask_yes_no(question, default=nil)
116:       if not @ins.tty? then
117:         if default.nil? then
118:           raise(
119:               Gem::OperationNotSupportedError,
120:               "Not connected to a tty and no default specified")
121:         else
122:           return default
123:         end
124:       end
125:       qstr = case default
126:       when nil
127:         'yn'
128:       when true
129:         'Yn'
130:       else
131:         'yN'
132:       end
133:       result = nil
134:       while result.nil?
135:         result = ask("#{question} [#{qstr}]")
136:         result = case result
137:         when /^[Yy].*/
138:           true
139:         when /^[Nn].*/
140:           false
141:         when /^$/
142:           default
143:         else
144:           nil
145:         end
146:       end
147:       return result
148:     end

Choose from a list of options. question is a prompt displayed above the list. list is a list of option strings. Returns the pair [option_name, option_index].

[Source]

     # File lib/rubygems/user_interaction.rb, line 96
 96:     def choose_from_list(question, list)
 97:       @outs.puts question
 98:       list.each_with_index do |item, index|
 99:         @outs.puts " #{index+1}. #{item}"
100:       end
101:       @outs.print "> "
102:       @outs.flush
103: 
104:       result = @ins.gets
105: 
106:       return nil, nil unless result
107: 
108:       result = result.strip.to_i - 1
109:       return list[result], result
110:     end

Return a progress reporter object

[Source]

     # File lib/rubygems/user_interaction.rb, line 192
192:     def progress_reporter(*args)
193:       case Gem.configuration.verbose
194:       when nil, false
195:         SilentProgressReporter.new(@outs, *args)
196:       when true
197:         SimpleProgressReporter.new(@outs, *args)
198:       else
199:         VerboseProgressReporter.new(@outs, *args)
200:       end
201:     end

Display a statement.

[Source]

     # File lib/rubygems/user_interaction.rb, line 162
162:     def say(statement="")
163:       @outs.puts statement
164:     end

Terminate the appliation normally, running any exit handlers that might have been defined.

[Source]

     # File lib/rubygems/user_interaction.rb, line 187
187:     def terminate_interaction(status = 0)
188:       raise Gem::SystemExitException, status
189:     end

[Validate]