From de82a6413f4c01e916ad95fe85a0fd46b83d863c Mon Sep 17 00:00:00 2001 From: Nick White Date: Thu, 3 Jan 2019 15:02:36 +0000 Subject: Sort lines by default, and add html output --- line-conf-avg/line-conf-avg.go | 70 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 68 insertions(+), 2 deletions(-) diff --git a/line-conf-avg/line-conf-avg.go b/line-conf-avg/line-conf-avg.go index 18421d3..5b7d2a4 100644 --- a/line-conf-avg/line-conf-avg.go +++ b/line-conf-avg/line-conf-avg.go @@ -4,23 +4,52 @@ import ( "bufio" "flag" "fmt" + "io/ioutil" "log" "os" + "path/filepath" + "sort" "strconv" "strings" ) +type LineDetail struct { + Filename string + Avgconf float64 + Filebase string + Basename string + Dirname string + Fulltext string +} + +type LineDetails []LineDetail + +// Used by sort.Sort. +func (l LineDetails) Len() int { return len(l) } + +// Used by sort.Sort. +func (l LineDetails) Less(i, j int) bool { + return l[i].Avgconf < l[j].Avgconf +} + +// Used by sort.Sort. +func (l LineDetails) Swap(i, j int) { l[i], l[j] = l[j], l[i] } + func main() { flag.Usage = func() { - fmt.Fprintf(os.Stderr, "Usage: line-conf-avg prob1 [prob2] [...]\n") + fmt.Fprintf(os.Stderr, "Usage: line-conf-avg [-html] [-nosort] prob1 [prob2] [...]\n") flag.PrintDefaults() } + var usehtml = flag.Bool("html", false, "output html page") + var nosort = flag.Bool("nosort", false, "don't sort lines by confidence") flag.Parse() if flag.NArg() < 1 { flag.Usage() os.Exit(1) } + lines := make(LineDetails, 0) + for _, f := range flag.Args() { file, err := os.Open(f) if err != nil { @@ -51,6 +80,43 @@ func main() { } avg := totalconf / float64(num) - fmt.Printf("%s: %.2f%%\n", f, avg) + if num == 0 || avg == 0 { + continue + } + + var linedetail LineDetail + linedetail.Filename = f + linedetail.Avgconf = avg + linedetail.Filebase = strings.Replace(f, ".prob", "", 1) + linedetail.Basename = filepath.Base(linedetail.Filebase) + linedetail.Dirname = filepath.Dir(linedetail.Filebase) + ft, ferr := ioutil.ReadFile(linedetail.Filebase + ".txt") + if ferr != nil { + log.Fatal(err) + } + linedetail.Fulltext = string(ft) + lines = append(lines, linedetail) + } + + if *nosort == false { + sort.Sort(lines) + } + + if *usehtml == false { + for _, l := range lines { + fmt.Printf("%s: %.2f%%\n", l.Filename, l.Avgconf) + } + } else { + fmt.Printf("\n") + fmt.Printf("\n") + for _, l := range lines { + fmt.Printf("\n") + fmt.Printf("\n", l.Avgconf) + fmt.Printf("\n", l.Filebase) + fmt.Printf("\n", l.Filebase + ".bin.png", l.Fulltext) + fmt.Printf("\n") + } + fmt.Printf("

%.4f%%

%s
%s
\n") + fmt.Printf("\n") } } -- cgit v1.2.1-24-ge1ad