# File lib/puppet/util/docs.rb, line 33
33:   def doctable(headers, data)
34:     str = "\n\n"
35: 
36:     lengths = []
37:     # Figure out the longest field for all columns
38:     data.each do |name, values|
39:       [name, values].flatten.each_with_index do |value, i|
40:         lengths[i] ||= 0
41:         lengths[i] = value.to_s.length if value.to_s.length > lengths[i]
42:       end
43:     end
44: 
45:     # The headers could also be longest
46:     headers.each_with_index do |value, i|
47:       lengths[i] = value.to_s.length if value.to_s.length > lengths[i]
48:     end
49: 
50:     # Add the header names
51:     str += headers.zip(lengths).collect { |value, num| pad(value, num) }.join(" | ") + " |" + "\n"
52: 
53:     # And the header row
54:     str += lengths.collect { |num| "-" * num }.join(" | ") + " |" + "\n"
55: 
56:     # Now each data row
57:     data.sort { |a, b| a[0].to_s <=> b[0].to_s }.each do |name, rows|
58:       str += [name, rows].flatten.zip(lengths).collect do |value, length|
59:         pad(value, length)
60:       end.join(" | ") + " |" + "\n"
61:     end
62: 
63:     str + "\n"
64:   end