class Basic101::Output
Constants
- COLUMNS_PER_TAB
Public Class Methods
new(file = $stdout)
click to toggle source
# File lib/basic101/output.rb, line 7 def initialize(file = $stdout) @file = file @chars_on_line = 0 @transcript = NullTranscript.new end
Public Instance Methods
echo(s)
click to toggle source
# File lib/basic101/output.rb, line 25 def echo(s) write_string s, false end
isatty()
click to toggle source
# File lib/basic101/output.rb, line 36 def isatty @file.isatty end
print(s)
click to toggle source
# File lib/basic101/output.rb, line 21 def print(s) write_string s, true end
puts(s = '')
click to toggle source
# File lib/basic101/output.rb, line 17 def puts(s = '') print s.to_s + "\n" end
tab_to(column)
click to toggle source
# File lib/basic101/output.rb, line 29 def tab_to(column) column = [0, column].max spaces_needed = -> {column - @chars_on_line} return if spaces_needed.call < 0 print ' ' * spaces_needed.call end
transcript=(transcript)
click to toggle source
# File lib/basic101/output.rb, line 13 def transcript=(transcript) @transcript = transcript end
Private Instance Methods
flush()
click to toggle source
# File lib/basic101/output.rb, line 68 def flush return if isatty @file.flush end
write_char(c, transcribe)
click to toggle source
# File lib/basic101/output.rb, line 62 def write_char(c, transcribe) @transcript.save_output(c) if transcribe @file.print c @chars_on_line += 1 if c =~ /[[:print:]]/ end
write_string(s, transcribe)
click to toggle source
# File lib/basic101/output.rb, line 44 def write_string(s, transcribe) s.chars.each do |c| case c when "\n" write_char c, transcribe @chars_on_line = 0 when "\t" write_char ' ', transcribe while @chars_on_line % COLUMNS_PER_TAB > 0 write_char ' ', transcribe end else write_char c, transcribe end end flush end