go(report): add table.go, table.tmpl
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
2d88ab9afc
commit
96a93788da
65
report/table.go
Normal file
65
report/table.go
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
// Copyright 2022 wanderer <a_mirre at utb dot cz>
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
package report
|
||||||
|
|
||||||
|
import (
|
||||||
|
"log"
|
||||||
|
"os"
|
||||||
|
"text/template"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"git.dotya.ml/wanderer/math-optim/util"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Table struct {
|
||||||
|
Algo string
|
||||||
|
Header []string
|
||||||
|
ColLayout []string
|
||||||
|
Rows []Row
|
||||||
|
}
|
||||||
|
|
||||||
|
type Row struct {
|
||||||
|
// Title of the row should contain the settings used to get the Values.
|
||||||
|
Title string
|
||||||
|
Values []float64
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewTable() *Table {
|
||||||
|
return &Table{}
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewRow() *Row {
|
||||||
|
return &Row{}
|
||||||
|
}
|
||||||
|
|
||||||
|
func SaveTableToFile(t Table) {
|
||||||
|
safeName := util.SanitiseFName(t.Algo)
|
||||||
|
texTableFile := GetTexDir() + "table-" + safeName + ".tex"
|
||||||
|
tmplTableFile := "report/table.tmpl"
|
||||||
|
tmplTable := template.Must(template.ParseFiles(tmplTableFile))
|
||||||
|
|
||||||
|
f, err := os.Create(texTableFile)
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
}
|
||||||
|
defer f.Close()
|
||||||
|
|
||||||
|
err = tmplTable.Execute(f, struct {
|
||||||
|
Algo string
|
||||||
|
ColLayout []string
|
||||||
|
ColNames []string
|
||||||
|
Rs []Row
|
||||||
|
Timestamp time.Time
|
||||||
|
}{
|
||||||
|
Algo: t.Algo,
|
||||||
|
ColNames: t.Header,
|
||||||
|
ColLayout: t.ColLayout,
|
||||||
|
Rs: t.Rows,
|
||||||
|
Timestamp: time.Now(),
|
||||||
|
})
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
}
|
||||||
|
}
|
31
report/table.tmpl
Normal file
31
report/table.tmpl
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
% Code generated by math-optim; DO NOT EDIT.
|
||||||
|
%
|
||||||
|
% This file was generated by robots at
|
||||||
|
% {{ .Timestamp }}
|
||||||
|
% source: git.dotya.ml/wanderer/math-optim/report/table.tmpl
|
||||||
|
|
||||||
|
% This file is a part of the math-optim project.
|
||||||
|
% project homepage: https://git.dotya.ml/wanderer/math-optim/
|
||||||
|
|
||||||
|
\subsection{ {{- .Algo -}} }
|
||||||
|
|
||||||
|
\begin{table}[!htb]
|
||||||
|
\centering
|
||||||
|
|
||||||
|
% \begin{tabular}[t]{ |l|{{- range $i, $v := .ColLayout }}{{$v}}| {{- end}} }
|
||||||
|
\begin{tabular}[t]{ ||l||{{- range $i, $v := .ColLayout }}{{$v}}| {{- end -}}| }
|
||||||
|
\toprule
|
||||||
|
& {{ range $i, $v := .ColNames }}{{$v }} & {{ end}}\\
|
||||||
|
{{- range $j, $v := .Rs }}
|
||||||
|
{{ printf "%s & " $v.Title }}
|
||||||
|
{{- range $k, $val := $v.Values }}
|
||||||
|
{{- printf "%f & " $val }}
|
||||||
|
{{- end}}\\
|
||||||
|
{{- end }}
|
||||||
|
\bottomrule
|
||||||
|
\end{tabular}
|
||||||
|
|
||||||
|
\caption{\label{table: {{ .Algo }} algo statistics}}
|
||||||
|
\end{table}
|
||||||
|
|
||||||
|
% vim: ft=gotexttmpl ts=2 sts=2 sw=2 bs=2 expandtab
|
Loading…
Reference in New Issue
Block a user