// Copyright 2025 WIT.COM Inc Licensed GPL 3.0 package cobol import ( "fmt" "strings" ) func DumbTable(data string) string { if cursize, ok := getTerminalWidth(); ok { TERMSIZE = cursize } lines := strings.Split(data, "\n") var sizes []int for _, line := range lines { line = strings.TrimSpace(line) if line == "" { continue } parts := strings.Fields(line) for i, part := range parts { if i >= len(sizes) { sizes = append(sizes, 0) } if sizes[i] < len(part) { sizes[i] = len(part) } } } // sizes := []int{size1, size2, size3} for _, line := range lines { parts := strings.Fields(line) line, fmtline := StandardTableRow(sizes, parts) _ = fmtline fmt.Println(line) } footer := fmt.Sprintf("DumbTable len=(%d) w=(%d) sizes=(%v)", len(data), TERMSIZE, sizes) return footer } func SimpleTable(data [][]string) string { if cursize, ok := getTerminalWidth(); ok { TERMSIZE = cursize } var sizes []int for _, parts := range data { for i, part := range parts { if i >= len(sizes) { sizes = append(sizes, 0) } if sizes[i] < len(part) { sizes[i] = len(part) } } } if (len(data) > 0) && (len(sizes) > 0) { sizes[len(sizes)-1] = -1 SimpleTableSizes(data, sizes) } footer := fmt.Sprintf(" SimpleTable() len=(%d) w=(%d) sizes=(%v)", len(data), TERMSIZE, sizes) return footer } func SimpleTableSizes(data [][]string, sizes []int) string { if cursize, ok := getTerminalWidth(); ok { TERMSIZE = cursize } if (len(data) > 0) && (len(sizes) > 0) { sizes[len(sizes)-1] = -1 for _, parts := range data { line, fmtline := StandardTableRow(sizes, parts) _ = fmtline fmt.Println(" " + line) } } footer := fmt.Sprintf(" SimpleTableSizes() len=(%d) w=(%d) sizes=(%v)", len(data), TERMSIZE, sizes) return footer } func SimpleTableSizesDebug(data [][]string, sizes []int) string { if cursize, ok := getTerminalWidth(); ok { TERMSIZE = cursize } for _, parts := range data { line, fmtline := StandardTableRowDebug(sizes, parts) _ = fmtline fmt.Println(line) } footer := fmt.Sprintf("records (%d) TERMSIZE (%d)", len(data), TERMSIZE) return footer } func DumbTable3(lines []string) { var size1 int var size2 int var size3 int for _, line := range lines { line = strings.TrimSpace(line) if line == "" { continue } parts := strings.Fields(line) if len(parts) != 3 { fmt.Println(parts) // panic("not 3 things") continue } if size1 < len(parts[0]) { size1 = len(parts[0]) } if size2 < len(parts[1]) { size2 = len(parts[1]) } if size3 < len(parts[2]) { size3 = len(parts[2]) } } sizes := []int{size1, size2, size3} for _, line := range lines { parts := strings.Fields(line) if len(parts) != 3 { fmt.Println(parts) // panic("not 3 things") continue } line, fmtline := StandardTableRow(sizes, parts) _ = fmtline fmt.Println(line) } }