Skip to content

Commit

Permalink
fileload: add e
Browse files Browse the repository at this point in the history
  • Loading branch information
dvrkps committed Apr 12, 2020
1 parent b461957 commit 1205567
Show file tree
Hide file tree
Showing 2 changed files with 92 additions and 0 deletions.
67 changes: 67 additions & 0 deletions fileload/e/main.go
@@ -0,0 +1,67 @@
package main

import (
"bufio"
"fmt"
"io"
"log"
"os"

"github.com/dvrkps/dojo/fileload"
)

func main() {
d, err := run()
if err != nil {
log.Print(err)
os.Exit(1)
}

fmt.Print(&d)
}

func run() (fileload.Data, error) {
empty := fileload.Data{}

f, err := os.Open(fileload.Path)
if err != nil {
return empty, fmt.Errorf("open: %v", err)
}
defer f.Close()

d := fileload.NewData()

err = parse(f, &d)
if err != nil {
return empty, fmt.Errorf("parse: %v", err)
}

return d, nil
}

func parse(r io.Reader, d *fileload.Data) error {
s := bufio.NewScanner(r)

ch := make(chan []byte)

go func() {
for s.Scan() {
ch <- s.Bytes()
}
close(ch)

err := s.Err()
if err != nil {
fmt.Printf("add: %v\n", err)
}
}()

for b := range ch {
err := d.Add(b)
if err != nil {
return err
}
}

return nil
}
25 changes: 25 additions & 0 deletions fileload/e/main_test.go
@@ -0,0 +1,25 @@
package main

import (
"testing"

"github.com/dvrkps/dojo/fileload"
)

var data fileload.Data

func BenchmarkRun(b *testing.B) {
var (
d fileload.Data
err error
)

for n := 0; n < b.N; n++ {
d, err = run()
if err != nil {
b.Fatal(err)
}
}

data = d
}

0 comments on commit 1205567

Please sign in to comment.