require 'ipaddr' TESTCASES = ["127.0.0.1", "127.0.0.1:80", "::1", "[::1]:80", "2605:2700:0:3::4713:93e3", "[2605:2700:0:3::4713:93e3]:80"] output = [%w(String Address Port Family Hex), %w(------ ------- ---- ------ ---)] def output_table(rows) widths = [] rows.each {|row| row.each_with_index {|col, i| widths[i] = [widths[i].to_i, col.to_s.length].max }} format = widths.map {|size| "%#{size}s"}.join("\t") rows.each {|row| puts format % row} end TESTCASES.each do |str| case str # handle port; IPAddr does not. when /\A\[(?
.* )\]:(?