def self.text_for_result(sender, status, msg, result, ddl)
statusses = ["",
Util.colorize(:red, "Request Aborted"),
Util.colorize(:yellow, "Unknown Action"),
Util.colorize(:yellow, "Missing Request Data"),
Util.colorize(:yellow, "Invalid Request Data"),
Util.colorize(:red, "Unknown Request Status")]
result_text = "%-40s %s\n" % [sender, statusses[status]]
result_text << " %s\n" % [Util.colorize(:yellow, msg)] unless msg == "OK"
if status == 0
if result.is_a?(Hash)
lengths = result.keys.map do |k|
begin
ddl[:output][k][:display_as].size
rescue
k.to_s.size
end
end
result.keys.sort_by{|k| k}.each do |k|
begin
display_as = ddl[:output][k][:display_as]
rescue
display_as = k.to_s
end
display_length = display_as.size
padding = lengths.max - display_length + 3
result_text << " " * padding
result_text << "#{display_as}:"
if [String, Numeric].include?(result[k].class)
lines = result[k].to_s.split("\n")
if lines.empty?
result_text << "\n"
else
lines.each_with_index do |line, i|
i == 0 ? padtxt = " " : padtxt = " " * (padding + display_length + 2)
result_text << "#{padtxt}#{line}\n"
end
end
else
padding = " " * (lengths.max + 5)
result_text << " " << result[k].pretty_inspect.split("\n").join("\n" << padding) << "\n"
end
end
elsif status == 1
else
result_text << "\n\t" + result.pretty_inspect.split("\n").join("\n\t")
end
end
result_text << "\n"
result_text
end