# File lib/mcollective/rpc/helpers.rb, line 120
      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"

        # only print good data, ignore data that results from failure
        if status == 0
          if result.is_a?(Hash)
            # figure out the lengths of the display as strings, we'll use
            # it later to correctly justify the output
            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|
              # get all the output fields nicely lined up with a
              # 3 space front padding
              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
            # for status 1 we dont want to show half baked
            # data by default since the DDL will supply all the defaults
            # it just doesnt look right
          else
            result_text << "\n\t" + result.pretty_inspect.split("\n").join("\n\t")
          end
        end

        result_text << "\n"
        result_text
      end