go(report): add pic.go, pics.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
a2bc1eec6f
commit
2d88ab9afc
71
report/pic.go
Normal file
71
report/pic.go
Normal file
@ -0,0 +1,71 @@
|
||||
// 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"
|
||||
)
|
||||
|
||||
// Pic holds path to pic along with its caption.
|
||||
type Pic struct {
|
||||
Caption string
|
||||
FilePath string
|
||||
}
|
||||
|
||||
// PicList is a structure holding a slice of pics and {bench,algo} metadata.
|
||||
type PicList struct {
|
||||
Algo string
|
||||
Bench string
|
||||
Pics []Pic
|
||||
}
|
||||
|
||||
// NewPic returns a new copy of Pic.
|
||||
func NewPic() *Pic {
|
||||
return &Pic{}
|
||||
}
|
||||
|
||||
// NewPicList returns a new copy of PicList.
|
||||
func NewPicList() *PicList {
|
||||
return &PicList{}
|
||||
}
|
||||
|
||||
// SavePicsToFile saves to file a pic list of a specified algo.
|
||||
func SavePicsToFile(p PicList, algoName string) {
|
||||
safeName := util.SanitiseFName(p.Algo + "-" + p.Bench)
|
||||
texPicsFile := GetTexDir() + "pics-" + safeName + ".tex"
|
||||
tmplPicsFile := "report/pics.tmpl"
|
||||
tmplPics := template.Must(template.ParseFiles(tmplPicsFile))
|
||||
|
||||
// make sure the output dir exists, else die early.
|
||||
if err := util.CreatePath(GetTexDir()); err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
f, err := os.Create(texPicsFile)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
err = tmplPics.Execute(f, struct {
|
||||
Algo string
|
||||
Bench string
|
||||
Pics []Pic
|
||||
Timestamp time.Time
|
||||
}{
|
||||
Algo: p.Algo,
|
||||
Bench: p.Bench,
|
||||
Pics: p.Pics,
|
||||
Timestamp: time.Now(),
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
}
|
23
report/pics.tmpl
Normal file
23
report/pics.tmpl
Normal file
@ -0,0 +1,23 @@
|
||||
% Code generated by math-optim; DO NOT EDIT.
|
||||
%
|
||||
% This file was generated by robots at
|
||||
% {{ .Timestamp }}
|
||||
% source: git.dotya.ml/wanderer/math-optim/report/pics.tmpl
|
||||
|
||||
% This file is a part of the math-optim project.
|
||||
% project homepage: https://git.dotya.ml/wanderer/math-optim/
|
||||
|
||||
\subsection{ {{- printf "%s - %s" .Algo .Bench -}} }
|
||||
|
||||
{{- range $i, $v := .Pics }}
|
||||
|
||||
\subsubsection{ {{- $v.Caption -}} }
|
||||
\begin{figure}[!hbt]
|
||||
\centering
|
||||
\includesvg[width=0.65\textwidth]{ {{- $v.FilePath -}} }
|
||||
\caption{ {{- $v.Caption -}} }
|
||||
\end{figure}
|
||||
|
||||
{{- end }}
|
||||
|
||||
% vim: ft=gotexttmpl.tex ts=2 sts=2 sw=2 bs=2 expandtab
|
Loading…
Reference in New Issue
Block a user