Class Table
has 32 methods (exceeds 20 allowed). Consider refactoring.
class Table
include Comparable, Enumerable, Validatable
extend Forwardable
Method column
has a Cognitive Complexity of 8 (exceeds 5 allowed). Consider refactoring.
def column(index)
index_unknown = index.is_a?(Integer) && (index >= columns_size || index < 0)
if block_given?
return self if index_unknown
rows.map { |row| yield row[index] }
Method coerce
has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.
def coerce(rows)
coerced_rows = []
Array(rows).each do |row|
if row == Border::SEPARATOR
separators << coerced_rows.length - (header ? 0 : 1)
Method validate_options!
has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
def validate_options!(options)
header = options[:header]
rows = options[:rows]
if header && (!header.is_a?(Array) || header.empty?)
Method assert_border_class
has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
def assert_border_class(border_class)
return unless border_class
unless border_class <= TTY::Table::Border
raise TypeError,
"#{border_class} should inherit from TTY::Table::Border"
Method enforce
has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
def enforce
assert_minimum_width
padding = renderer.padding
if natural_width <= renderer.width
Method shrink
has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
def shrink
column_size = table.columns_size
ratio = ((natural_width - renderer.width) / column_size.to_f).ceil
widths = (0...column_size).reduce([]) do |lengths, col|