addressed consistency
This commit is contained in:
1 parent
6703481dbb
commit
e167627ac3
8 files changed
+104
-88
No files matched your search
@@ -1,3 +1,6 @@
|
||||
// Package table renders an internal.AggregatorWriter as the human-readable
|
||||
// Anexo J report table, for the terminal (Render) and for embedding in HTML
|
||||
// documents (RenderHTML).
|
||||
package table
|
||||
|
||||
import (
|
||||
@@ -10,23 +13,22 @@ import (
|
||||
"github.com/nmoniz/any2anexoj/internal"
|
||||
)
|
||||
|
||||
// PrettyPrinter writes a simple, human readable, table row to the provided io.Writer for each
|
||||
// translator is the contract the table printer relies on for human-readable
|
||||
// column labels. *Localizer satisfies it.
|
||||
type translator interface {
|
||||
Translate(key string, count int, values map[string]any) string
|
||||
}
|
||||
|
||||
// Printer writes a simple, human readable, table row to the provided io.Writer for each
|
||||
// ReportItem received. Render and RenderHTML each build a fresh table.Writer so that
|
||||
// invoking them (in any order or repeatedly) on the same instance never duplicates rows.
|
||||
type PrettyPrinter struct {
|
||||
type Printer struct {
|
||||
output io.Writer
|
||||
translator Translator
|
||||
}
|
||||
|
||||
<<<<<<<< HEAD:cmd/any2anexoj-cli/pretty_printer.go
|
||||
type Translator interface {
|
||||
Translate(key string, count int, values map[string]any) string
|
||||
}
|
||||
|
||||
func NewPrettyPrinter(w io.Writer, tr Translator) *PrettyPrinter {
|
||||
========
|
||||
func NewPrettyPrinter(w io.Writer, tr translator) *PrettyPrinter {
|
||||
return &PrettyPrinter{
|
||||
func NewPrinter(w io.Writer, tr translator) *Printer {
|
||||
return &Printer{
|
||||
output: w,
|
||||
translator: tr,
|
||||
}
|
||||
@@ -37,8 +39,7 @@ func NewPrettyPrinter(w io.Writer, tr translator) *PrettyPrinter {
|
||||
// multiple times without duplicating rows. The returned table is not wired to
|
||||
// pp.output via an output mirror; callers that want the rendered output
|
||||
// written to pp.output must set the mirror themselves before calling .Render().
|
||||
func (pp *PrettyPrinter) buildTable(aw *internal.AggregatorWriter) table.Writer {
|
||||
>>>>>>>> 6ba3d78 (writers in writing package):internal/writing/pretty/printer.go
|
||||
func (pp *Printer) buildTable(aw *internal.AggregatorWriter) table.Writer {
|
||||
tw := table.NewWriter()
|
||||
tw.SetAutoIndex(true)
|
||||
tw.SetStyle(table.StyleLight)
|
||||
@@ -83,12 +84,16 @@ func (pp *PrettyPrinter) buildTable(aw *internal.AggregatorWriter) table.Writer
|
||||
}
|
||||
|
||||
sumTxt := pp.translator.Translate("sum", 1, nil)
|
||||
tw.AppendFooter(table.Row{sumTxt, sumTxt, sumTxt, sumTxt, sumTxt, aw.TotalEarned(), "", "", "", aw.TotalSpent(), aw.TotalFees(), aw.TotalTaxes()}, table.RowConfig{AutoMerge: true, AutoMergeAlign: text.AlignRight})
|
||||
// The footer lists one cell per column (13) so it never relies on
|
||||
// go-pretty's implicit short-row padding; the trailing empty cell is the
|
||||
// counter-country column, which has no total. Totals are formatted with
|
||||
// StringFixed(2) so they match the two-decimal data rows.
|
||||
tw.AppendFooter(table.Row{sumTxt, sumTxt, sumTxt, sumTxt, sumTxt, aw.TotalEarned().StringFixed(2), "", "", "", aw.TotalSpent().StringFixed(2), aw.TotalFees().StringFixed(2), aw.TotalTaxes().StringFixed(2), ""}, table.RowConfig{AutoMerge: true, AutoMergeAlign: text.AlignRight})
|
||||
|
||||
return tw
|
||||
}
|
||||
|
||||
func (pp *PrettyPrinter) Render(aw *internal.AggregatorWriter) {
|
||||
func (pp *Printer) Render(aw *internal.AggregatorWriter) {
|
||||
t := pp.buildTable(aw)
|
||||
t.SetOutputMirror(pp.output)
|
||||
t.Render()
|
||||
@@ -96,7 +101,7 @@ func (pp *PrettyPrinter) Render(aw *internal.AggregatorWriter) {
|
||||
|
||||
// RenderHTML builds a fresh table from aw and renders it as an HTML string
|
||||
// using go-pretty's HTMLOptions.
|
||||
func (pp *PrettyPrinter) RenderHTML(aw *internal.AggregatorWriter) string {
|
||||
func (pp *Printer) RenderHTML(aw *internal.AggregatorWriter) string {
|
||||
t := pp.buildTable(aw)
|
||||
t.Style().HTML = table.HTMLOptions{
|
||||
CSSClass: "table table-striped table-hover table-bordered",
|
||||
|
||||
Reference in new issue
Block a user