Class: Thor::Shell::WrappedPrinter

Inherits:
ColumnPrinter show all
Defined in:
lib/thor/shell/wrapped_printer.rb

Instance Attribute Summary

Attributes inherited from ColumnPrinter

#options, #stdout

Instance Method Summary collapse

Methods inherited from ColumnPrinter

#initialize

Constructor Details

This class inherits a constructor from Thor::Shell::ColumnPrinter

Instance Method Details



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/thor/shell/wrapped_printer.rb', line 7

def print(message)
  width = Terminal.terminal_width - @indent
  paras = message.split("\n\n")

  paras.map! do |unwrapped|
    words = unwrapped.split(" ")
    counter = words.first.length
    words.inject do |memo, word|
      word = word.gsub(/\n\005/, "\n").gsub(/\005/, "\n")
      counter = 0 if word.include? "\n"
      if (counter + word.length + 1) < width
        memo = "#{memo} #{word}"
        counter += (word.length + 1)
      else
        memo = "#{memo}\n#{word}"
        counter = word.length
      end
      memo
    end
  end.compact!

  paras.each do |para|
    para.split("\n").each do |line|
      stdout.puts line.insert(0, " " * @indent)
    end
    stdout.puts unless para == paras.last
  end
end