From 30c088b90e7b6a25d93cbdad7564ff063e62afd3 Mon Sep 17 00:00:00 2001
From: Nick White <git@njw.name>
Date: Fri, 25 Jan 2019 09:55:55 +0000
Subject: Reorganisation and cleanup

---
 lib/prob/prob.go | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 69 insertions(+)
 create mode 100644 lib/prob/prob.go

(limited to 'lib/prob')

diff --git a/lib/prob/prob.go b/lib/prob/prob.go
new file mode 100644
index 0000000..0299a96
--- /dev/null
+++ b/lib/prob/prob.go
@@ -0,0 +1,69 @@
+package prob
+
+import (
+	"io/ioutil"
+	"path/filepath"
+	"strconv"
+	"strings"
+
+	"git.rescribe.xyz/testingtools/lib/line"
+)
+
+func getLineAvg(f string) (float64, error) {
+	totalconf := float64(0)
+	num := 0
+
+	prob, err := ioutil.ReadFile(f)
+        if err != nil {
+		return 0, err
+	}
+
+	for _, l := range strings.Split(string(prob), "\n") {
+		fields := strings.Fields(l)
+
+		if len(fields) == 2 {
+			conf, err := strconv.ParseFloat(fields[1], 64)
+			if err != nil {
+				continue
+			}
+			totalconf += conf
+			num += 1
+		}
+	}
+	if num <= 0 {
+		return 0, nil
+	}
+	avg := totalconf / float64(num)
+	return avg, nil
+}
+
+// Note this only processes one line at a time
+func GetLineDetails(probfn string) (line.Details, error) {
+	var l line.Detail
+	lines := make(line.Details, 0)
+
+	avg, err := getLineAvg(probfn)
+	if err != nil {
+		return lines, err
+	}
+
+	filebase := strings.Replace(probfn, ".prob", "", 1)
+
+	txt, err := ioutil.ReadFile(filebase + ".txt")
+	if err != nil {
+		return lines, err
+	}
+
+	l.Name = filepath.Base(filebase)
+	l.Avgconf = avg
+	l.Text = string(txt)
+	l.OcrName = filepath.Dir(filebase)
+
+	var imgfn line.ImgPath
+	imgfn.Path = filebase + ".bin.png"
+	l.Img = imgfn
+
+	lines = append(lines, l)
+
+	return lines, nil
+}
-- 
cgit v1.2.1-24-ge1ad