class KPM::Formatter
def compute_labels(data, labels)
def compute_labels(data, labels) seen_labels = Set.new labels_format_argument = [] data.each_key do |key| v = data[key] labels.each do |e| # sanitize entry at the same time v[e[:label]] = v[e[:label]] || '???' # Always recompute the size formatter = e[:formatter].nil? ? DefaultFormatter.new(e[:label], v[e[:label]]) : e[:formatter].to_class.new(e[:label], v[e[:label]]) prev_size = e.key?(:size) ? e[:size] : formatter.label.size cur_size = formatter.size e[:size] = prev_size < cur_size ? cur_size : prev_size # Labels should be unique though labels_format_argument << formatter.label unless seen_labels.include?(e[:label]) seen_labels << e[:label] end end labels_format_argument end