68: def featuredocs
69: str = ""
70: @features ||= {}
71: return nil if @features.empty?
72: names = @features.keys.sort { |a,b| a.to_s <=> b.to_s }
73: names.each do |name|
74: doc = @features[name].docs.gsub(/\n\s+/, " ")
75: str += "- *#{name}*: #{doc}\n"
76: end
77:
78: if providers.length > 0
79: headers = ["Provider", names].flatten
80: data = {}
81: providers.each do |provname|
82: data[provname] = []
83: prov = provider(provname)
84: names.each do |name|
85: if prov.feature?(name)
86: data[provname] << "*X*"
87: else
88: data[provname] << ""
89: end
90: end
91: end
92: str += doctable(headers, data)
93: end
94: str
95: end