Diff

Differences From Artifact [a5a47b7f78]:

To Artifact [2e2860e831]:


24
25
26
27
28
29
30

31

32
33
34
35




36
37
38
39
40
41
42
43
44







45






46
47
48
49
50
51
52
24
25
26
27
28
29
30
31

32
33
34


35
36
37
38
39
40
41
42
43
44
45
46

47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67







+
-
+


-
-
+
+
+
+








-
+
+
+
+
+
+
+

+
+
+
+
+
+







type recommendation struct {
	p2s map[uint16]byte
	s2p map[byte]uint16
}

func apply(rec *recommendation, reader io.Reader) {
	symbolReader := iou.SizedReader(iou.ReaderFunc(func(output []byte) (int, error) {
		var i int = 0
		for i := 0; i < len(output)-1; i++ {
		for ; i < len(output)-1; i++ {
			// Read a byte from the underlying reader
			count, err := reader.Read(output[i : i+1])
			if err != nil || count != 1 {
				return i + count, err

			// If we can't read anything else - return immediatelly
			if count == 0 {
				return i, err
			}

			// Convert the byte to a pair if there is a mapping for it
			if pair, ok := rec.s2p[output[i]]; ok {
				output[i] = byte(pair >> 8) // extract the high byte from the pair
				i++
				output[i] = byte(pair) // leave only the low byte from the pair
			}
		}

			// Return on error
			if err != nil {
				return i + 1, err
			}
		}
		return i + 1, nil
	}), 2)

	pairReader := iou.ReaderFunc(func(output []byte) (int, error) {
		for i := 0; i < len(output); i++ {

		}
	})
}

func recommend(pairs pairSlice, symbols symbolSlice) *recommendation {
	var (
		rec         recommendation
		pairsLength = len(pairs)
	)