def say(msg)
if msg.respond_to? :to_str
separate_blocks
statement = msg.to_str
return statement unless statement.present?
template = ERB.new(statement, nil, "%")
statement = template.result(binding)
if @wrap_at
statement = statement.chomp.textwrap_ansi(@wrap_at, false)
if @last_line_open && statement.length > 1
@last_line_open = false
@output.puts
end
statement = statement.join("#{indentation}\n")
end
statement = send(:page_print, statement) unless @page_at.nil?
@output.print(indentation) unless @last_line_open
@last_line_open =
if statement[-1, 1] == " " or statement[-1, 1] == "\t"
@output.print(statement)
@output.flush
true
else
@output.puts(statement)
false
end
elsif msg.respond_to? :each
separate_blocks
@output.print if @last_line_open
@last_line_open = false
color = msg.color if msg.respond_to? :color
@output.print HighLine::Style(color).code if color
msg.each do |s|
@output.print indentation
@output.puts s
end
@output.print HighLine::CLEAR if color
@output.flush
end
msg
end