Method: String#fold

Defined in:
lib/wavefront-cli/stdlib/string.rb

#fold(twidth = TW, indent = 10, prefix = '') ⇒ String

Fold long lines with a hanging indent. Originally a special case for option folding, now addded the prefix parameter to make it more general. Don’t line-break default values, because it also breaks docopt.

Parameters:

  • twidth (Integer) (defaults to: TW)

    terminal width

  • indent (Integer) (defaults to: 10)

    size of hanging indent, in chars

  • prefix (String) (defaults to: '')

    prepended to every line

Returns:

  • (String)

    the folded line



37
38
39
40
41
42
43
44
45
46
47
# File 'lib/wavefront-cli/stdlib/string.rb', line 37

def fold(twidth = TW, indent = 10, prefix = '')
  chunks = gsub('default: ', 'default:^').scan_line(twidth - 8)
  first_line = format("%<padding>s%<text>s\n",
                      padding: prefix,
                      text: chunks.shift)

  return first_line.restored if chunks.empty?

  rest = indent_folded_lines(chunks, twidth, indent, prefix)
  (first_line + rest.join("\n")).restored
end