mirror of
https://github.com/sbrow/envr.git
synced 2026-06-28 02:58:33 -04:00
test: Added missing tests.
This commit is contained in:
22
table.odin
22
table.odin
@@ -5,16 +5,16 @@ import "core:fmt"
|
||||
import "core:io"
|
||||
import "core:strings"
|
||||
|
||||
render_table :: proc(headers: []string, rows: [][]string) {
|
||||
render_table :: proc(w: io.Writer, headers: []string, rows: [][]string) {
|
||||
col_widths := make([dynamic]int, 0, len(headers))
|
||||
for i in 0 ..< len(headers) {
|
||||
append(&col_widths, strings.rune_count(headers[i]))
|
||||
}
|
||||
for r in rows {
|
||||
for i in 0 ..< len(r) {
|
||||
w := strings.rune_count(r[i])
|
||||
if i < len(col_widths) && w > col_widths[i] {
|
||||
col_widths[i] = w
|
||||
rw := strings.rune_count(r[i])
|
||||
if i < len(col_widths) && rw > col_widths[i] {
|
||||
col_widths[i] = rw
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -24,7 +24,7 @@ render_table :: proc(headers: []string, rows: [][]string) {
|
||||
defer strings.builder_destroy(&b)
|
||||
defer delete(col_widths)
|
||||
|
||||
hline :: proc(b: ^strings.Builder, left, mid, right: string, widths: [dynamic]int) {
|
||||
hline :: proc(w: io.Writer, b: ^strings.Builder, left, mid, right: string, widths: [dynamic]int) {
|
||||
strings.write_string(b, left)
|
||||
for i in 0 ..< len(widths) {
|
||||
for _ in 0 ..< widths[i] + 2 {
|
||||
@@ -36,11 +36,11 @@ render_table :: proc(headers: []string, rows: [][]string) {
|
||||
strings.write_string(b, right)
|
||||
}
|
||||
}
|
||||
fmt.println(strings.to_string(b^))
|
||||
fmt.wprintf(w, "%s\n", strings.to_string(b^), flush = false)
|
||||
strings.builder_reset(b)
|
||||
}
|
||||
|
||||
hline(&b, "\u250c", "\u252c", "\u2510", col_widths)
|
||||
hline(w, &b, "\u250c", "\u252c", "\u2510", col_widths)
|
||||
|
||||
cell :: proc(b: ^strings.Builder, s: string, width: int) {
|
||||
extra := len(s) - strings.rune_count(s)
|
||||
@@ -51,21 +51,21 @@ render_table :: proc(headers: []string, rows: [][]string) {
|
||||
for i in 0 ..< len(headers) {
|
||||
cell(&b, headers[i], col_widths[i])
|
||||
}
|
||||
fmt.println(strings.to_string(b))
|
||||
fmt.wprintf(w, "%s\n", strings.to_string(b), flush = false)
|
||||
strings.builder_reset(&b)
|
||||
|
||||
hline(&b, "\u251c", "\u253c", "\u2524", col_widths)
|
||||
hline(w, &b, "\u251c", "\u253c", "\u2524", col_widths)
|
||||
|
||||
for r in rows {
|
||||
strings.write_string(&b, "\u2502")
|
||||
for i in 0 ..< len(r) {
|
||||
cell(&b, r[i], col_widths[i])
|
||||
}
|
||||
fmt.println(strings.to_string(b))
|
||||
fmt.wprintf(w, "%s\n", strings.to_string(b), flush = false)
|
||||
strings.builder_reset(&b)
|
||||
}
|
||||
|
||||
hline(&b, "\u2514", "\u2534", "\u2518", col_widths)
|
||||
hline(w, &b, "\u2514", "\u2534", "\u2518", col_widths)
|
||||
}
|
||||
|
||||
render_json_rows :: proc(w: io.Writer, headers: []string, rows: [][]string) {
|
||||
|
||||
Reference in New Issue
Block a user