From 20a479c5a9dbdb24e3fe08aeb94440ade6a88de9 Mon Sep 17 00:00:00 2001
From: Nick White <git@njw.name>
Date: Thu, 24 Jan 2019 17:02:56 +0000
Subject: Simplify .prob processing

---
 line-conf-buckets/line-conf-buckets.go | 17 +----------------
 parse/prob/prob.go                     | 27 ++++++++++++---------------
 2 files changed, 13 insertions(+), 31 deletions(-)

diff --git a/line-conf-buckets/line-conf-buckets.go b/line-conf-buckets/line-conf-buckets.go
index 915b2b4..689b779 100644
--- a/line-conf-buckets/line-conf-buckets.go
+++ b/line-conf-buckets/line-conf-buckets.go
@@ -4,7 +4,6 @@ package main
 // TODO: set bucket dirname from cmdline
 
 import (
-	"bufio"
 	"flag"
 	"fmt"
 	"log"
@@ -14,20 +13,6 @@ import (
 	"git.rescribe.xyz/testingtools/parse/prob"
 )
 
-func detailsFromFile(f string) (parse.LineDetails, error) {
-	var newlines parse.LineDetails
-
-	file, err := os.Open(f)
-	if err != nil {
-		return newlines, err
-	}
-	defer file.Close()
-
-	reader := bufio.NewReader(file)
-
-	return prob.GetLineDetails(f, reader)
-}
-
 func main() {
 	flag.Usage = func() {
 		fmt.Fprintf(os.Stderr, "Usage: line-conf-buckets prob1 [prob2] [...]\n")
@@ -44,7 +29,7 @@ func main() {
 	lines := make(parse.LineDetails, 0)
 
 	for _, f := range flag.Args() {
-		newlines, err := detailsFromFile(f)
+		newlines, err := prob.GetLineDetails(f)
 		if err != nil {
 			log.Fatal(err)
 		}
diff --git a/parse/prob/prob.go b/parse/prob/prob.go
index 6781a1a..8d01cab 100644
--- a/parse/prob/prob.go
+++ b/parse/prob/prob.go
@@ -1,7 +1,6 @@
 package prob
 
 import (
-	"bufio"
 	"io/ioutil"
 	"path/filepath"
 	"strconv"
@@ -10,22 +9,21 @@ import (
 	"git.rescribe.xyz/testingtools/parse"
 )
 
-// TODO: probably switch to just relying on io.Reader
-func getLineAvg(r *bufio.Reader) (float64, error) {
-	var err error
-
+func getLineAvg(f string) (float64, error) {
 	totalconf := float64(0)
 	num := 0
 
-	err = nil
-	for err == nil {
-		var line string
-		line, err = r.ReadString('\n')
+	prob, err := ioutil.ReadFile(f)
+        if err != nil {
+		return 0, err
+	}
+
+	for _, line := range strings.Split(string(prob), "\n") {
 		fields := strings.Fields(line)
 
 		if len(fields) == 2 {
-			conf, converr := strconv.ParseFloat(fields[1], 64)
-			if converr != nil {
+			conf, err := strconv.ParseFloat(fields[1], 64)
+			if err != nil {
 				continue
 			}
 			totalconf += conf
@@ -39,18 +37,17 @@ func getLineAvg(r *bufio.Reader) (float64, error) {
 	return avg, nil
 }
 
-// TODO: probably switch to just relying on io.Reader
 // Note this only processes one line at a time
-func GetLineDetails(name string, r *bufio.Reader) (parse.LineDetails, error) {
+func GetLineDetails(probfn string) (parse.LineDetails, error) {
 	var line parse.LineDetail
 	lines := make(parse.LineDetails, 0)
 
-	avg, err := getLineAvg(r)
+	avg, err := getLineAvg(probfn)
 	if err != nil {
 		return lines, err
 	}
 
-	filebase := strings.Replace(name, ".prob", "", 1)
+	filebase := strings.Replace(probfn, ".prob", "", 1)
 
 	txt, err := ioutil.ReadFile(filebase + ".txt")
 	if err != nil {
-- 
cgit v1.2.1-24-ge1ad