class Bbiff::Executable::LineIndicator
Public Class Methods
new(out = STDOUT)
click to toggle source
# File lib/bbiff/executable.rb, line 10 def initialize(out = STDOUT) @width = 0 @out = out @closed = false end
Public Instance Methods
clear()
click to toggle source
# File lib/bbiff/executable.rb, line 40 def clear raise_if_closed! @out.print "\r#{' ' * @width}\r" @width = 0 end
close()
click to toggle source
# File lib/bbiff/executable.rb, line 60 def close if @closed raise 'already closed LineIndicator' else @out.puts if @width > 0 @closed = true end end
newline()
click to toggle source
# File lib/bbiff/executable.rb, line 33 def newline raise_if_closed! @out.print "\n" @width = 0 end
puts(str)
click to toggle source
# File lib/bbiff/executable.rb, line 47 def puts(str) raise_if_closed! set_line(str) newline end
raise_if_closed!()
click to toggle source
# File lib/bbiff/executable.rb, line 54 def raise_if_closed! if @closed raise 'Closed LineIndicator' end end
set_line(str)
click to toggle source
# File lib/bbiff/executable.rb, line 16 def set_line(str) raise_if_closed! clear if str[-1] == "\n" if str.rindex("\n") != str.size-1 || str.index("\n") < str.rindex("\n") raise 'multiline' end @out.print str @width = 0 else @out.print str @width = mbswidth(str) end end
Private Instance Methods
mbswidth(str)
click to toggle source
# File lib/bbiff/executable.rb, line 71 def mbswidth(str) Unicode::DisplayWidth.of(str) end