Sha256: f29129420612abddebd2aed9b197c9c0608e6b9ff2b0310b6a732fe85701df94
Contents?: true
Size: 1.11 KB
Versions: 3
Compression:
Stored size: 1.11 KB
Contents
class Cl class Help class Table include Wrap attr_reader :data, :padding def initialize(data) @data = data end def any? data.any? end def format(padding = 8) @padding = padding rows.join("\n") end alias to_s format def rows data.map { |row| cells(row).join(' ').rstrip } end def cells(row) row.map.with_index do |cell, ix| indent(wrap(cell.to_s), widths[ix - 1]).ljust(widths[ix]) end end def indent(str, width) return str if str.empty? || !width [str.lines[0], *str.lines[1..-1].map { |str| ' ' * (width + 1) + str }].join.rstrip end def width widths = cols[0..-2].map { |col| col.max_by(&:size).size }.inject(&:+).to_i widths + cols.size - 1 end def widths cols.map.with_index do |col, ix| width = col.compact.max_by(&:size)&.size ix < cols.size - 2 ? width.to_i : width.to_i + padding.to_i end end def cols @cols ||= data.transpose end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
cl-0.1.5 | lib/cl/help/table.rb |
cl-0.1.4 | lib/cl/help/table.rb |
cl-0.1.3 | lib/cl/help/table.rb |