ezpz case actually looks ok

master
bel 2022-07-11 21:50:43 -06:00
parent 683bd62b87
commit 3dde3a723a
2 changed files with 30 additions and 7 deletions

31
main.go
View File

@ -3,7 +3,6 @@ package main
import ( import (
"bufio" "bufio"
"bytes" "bytes"
"errors"
"flag" "flag"
"io" "io"
"os" "os"
@ -57,14 +56,36 @@ func _readPage(d byte, r *bufio.Reader) ([]byte, error) {
} }
func putPage(b []byte) error { func putPage(b []byte) error {
return _putPage(stdout, b) return _putPage(stdout, b, []byte(columnDelimiter)[0], minimumInstances)
} }
func _putPage(w io.Writer, b []byte) error { func _putPage(w io.Writer, b []byte, d byte, instances int) error {
nonFirstColumn := []byte{}
for _, line := range lines(b) { for _, line := range lines(b) {
_ = line //line = bytes.TrimSpace(line)
i := 0
for i < len(line) && line[i] == d {
i += 1
} }
return errors.New("not impl") for i < len(line) {
j := 0
for j+i < len(line) && line[i+j] == d {
j += 1
}
if j >= instances {
nonFirstColumn = append(nonFirstColumn, line[i+j:]...)
line = line[:i+j]
break
}
i += 1
}
w.Write(line)
w.Write([]byte{'\n'})
}
if len(nonFirstColumn) > 0 {
return _putPage(w, nonFirstColumn, d, instances)
}
return nil
} }
func lines(b []byte) [][]byte { func lines(b []byte) [][]byte {

View File

@ -10,7 +10,8 @@ import (
) )
func Test_Main(t *testing.T) { func Test_Main(t *testing.T) {
stdin = strings.NewReader("\ta a a\t\tb b b\na a\t\tb b\fc c\td d\nc c\td.") input := "\ta a a\t\tb b b\na a\t\tb b\fc c\td d\nc c\td."
stdin = strings.NewReader(input)
stdout = bytes.NewBuffer(nil) stdout = bytes.NewBuffer(nil)
columnDelimiter = "\t" columnDelimiter = "\t"
pageDelimiter = "\f" pageDelimiter = "\f"
@ -18,7 +19,8 @@ func Test_Main(t *testing.T) {
if err := _main(); err != nil { if err := _main(); err != nil {
t.Error(err) t.Error(err)
} }
t.Errorf("%s", stdout.(*bytes.Buffer).Bytes()) t.Logf("input:\n%s", input)
t.Errorf("result:\n%s", stdout.(*bytes.Buffer).Bytes())
} }
func TestReadPage(t *testing.T) { func TestReadPage(t *testing.T) {