Module: Cri::CoreExtensions::String
- Included in:
- String
- Defined in:
- lib/cri/core_ext/string.rb
Instance Method Summary (collapse)
-
- (String) formatted_as_command
The string, formatted to be used as the name of a command in the help.
-
- (String) formatted_as_option
The string, formatted to be used as an option definition of a command in the help.
-
- (String) formatted_as_title
The string, formatted to be used as a title in a section in the help.
-
- (Array<String>) to_paragraphs
Extracts individual paragraphs (separated by two newlines).
-
- (String) wrap_and_indent(width, indentation)
Word-wraps and indents the string.
Instance Method Details
- (String) formatted_as_command
Returns The string, formatted to be used as the name of a command in the help
74 75 76 |
# File 'lib/cri/core_ext/string.rb', line 74 def formatted_as_command self.green end |
- (String) formatted_as_option
Returns The string, formatted to be used as an option definition of a command in the help
80 81 82 |
# File 'lib/cri/core_ext/string.rb', line 80 def formatted_as_option self.yellow end |
- (String) formatted_as_title
Returns The string, formatted to be used as a title in a section in the help
68 69 70 |
# File 'lib/cri/core_ext/string.rb', line 68 def formatted_as_title self.upcase.red.bold end |
- (Array<String>) to_paragraphs
Extracts individual paragraphs (separated by two newlines).
12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/cri/core_ext/string.rb', line 12 def to_paragraphs lines = self.scan(/([^\n]+\n|[^\n]*$)/).map { |s| s[0].strip } paragraphs = [ [] ] lines.each do |line| if line.empty? paragraphs << [] else paragraphs.last << line end end paragraphs.reject { |p| p.empty? }.map { |p| p.join(' ') } end |
- (String) wrap_and_indent(width, indentation)
Word-wraps and indents the string.
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/cri/core_ext/string.rb', line 36 def wrap_and_indent(width, indentation) indented_width = width - indentation indent = ' ' * indentation # Split into paragraphs paragraphs = self.to_paragraphs # Wrap and indent each paragraph paragraphs.map do |paragraph| # Initialize lines = [] line = '' # Split into words paragraph.split(/\s/).each do |word| # Begin new line if it's too long if (line + ' ' + word).length >= indented_width lines << line line = '' end # Add word to line line += (line == '' ? '' : ' ' ) + word end lines << line # Join lines lines.map { |l| indent + l }.join("\n") end.join("\n\n") end |