Module: Ark::Text
- Defined in:
- lib/ark/utility.rb
Overview
Methods for manipulating text
Class Method Summary collapse
-
.wrap(text, width: 78, indent: 0, indent_after: false) ⇒ Object
Wrap a string to a given width, with an optional indent.
- .wrap_segments(segments, width: 78, indent: 0, indent_after: false) ⇒ Object
Class Method Details
.wrap(text, width: 78, indent: 0, indent_after: false) ⇒ Object
Wrap a string to a given width, with an optional indent. Indented text will fall within the specified width.
text
-
The text to be wrapped
width
-
The number of columns to wrap within
indent
-
Indent each wrapped line of
text
by this number of columns
123 124 125 126 127 128 129 |
# File 'lib/ark/utility.rb', line 123 def self.wrap(text, width: 78, indent: 0, indent_after: false) if text.is_a?(Array) text = text.flatten.join(' ') end text = text.split(' ') self.wrap_segments(text, width: width, indent: indent, indent_after: indent_after) end |
.wrap_segments(segments, width: 78, indent: 0, indent_after: false) ⇒ Object
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/ark/utility.rb', line 94 def self.wrap_segments(segments, width: 78, indent: 0, indent_after: false) segments = segments.flatten.map(&:to_s) lines = [] line = '' current_indent = indent segments.each do |seg| if lines.empty? && indent_after current_indent = 0 else current_indent = indent end if line.size + seg.size >= width lines << line line = (' ' * indent) + seg elsif line.empty? line = (' ' * current_indent) + seg else line << ' ' << seg end end lines << line if line return lines.join("\n") end |