class Riffer::Rig::Terminal::Wrapper
Public Class Methods
(width: Integer?, indent: Integer, ?verbatim: bool) → void
Source
# File lib/riffer/rig/terminal/wrapper.rb, line 13 def initialize(width:, indent:, verbatim: false) @width = width @indent = indent @verbatim = verbatim @line = '' end
@rbs width: Integer? @rbs indent: Integer @rbs verbatim: bool @rbs return: void
Public Instance Methods
(String text) → String
Source
# File lib/riffer/rig/terminal/wrapper.rb, line 22 def <<(text) *terminated, last = "#{@line}#{text}".split(/\r?\n/, -1) pending = last.to_s *overflow, tail = wrap(pending) # A cut leaves the pending line starting on a word, so the whitespace at a # wrap boundary is never mistaken for the indentation of a new line. # Verbatim wrap is lossless, so tail already carries that whitespace there. remainder = @verbatim ? tail.to_s : "#{tail}#{pending[/\s*\z/]}" @line = overflow.empty? ? pending : remainder [*terminated.map { |line| blank?(line) ? "\n" : indented(wrap(line)) }, indented(overflow)].join end
@rbs text: String @rbs return: String
() → String
Source
# File lib/riffer/rig/terminal/wrapper.rb, line 35 def flush pending = @line @line = '' blank?(pending) ? '' : indented(wrap(pending)) end
@rbs return: String