/
example_test.go
103 lines (95 loc) · 1.83 KB
/
example_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
package yacr_test
import (
"fmt"
"os"
"strings"
"github.com/gwenn/yacr"
)
func Example() {
r := yacr.NewReader(os.Stdin, '\t', false, false)
w := yacr.NewWriter(os.Stdout, '\t', false)
for r.Scan() && w.Write(r.Bytes()) {
if r.EndOfRecord() {
w.EndOfRecord()
}
}
w.Flush()
if err := r.Err(); err != nil {
_, _ = fmt.Fprintln(os.Stderr, err)
}
if err := w.Err(); err != nil {
_, _ = fmt.Fprintln(os.Stderr, err)
}
}
func Example_reader() {
r := yacr.DefaultReader(strings.NewReader("c1,\"c\"\"2\",\"c\n3\",\"c,4\""))
fmt.Print("[")
for r.Scan() {
fmt.Print(r.Text())
if r.EndOfRecord() {
fmt.Print("]\n")
} else {
fmt.Print(" ")
}
}
if err := r.Err(); err != nil {
fmt.Println(err)
}
// Output: [c1 c"2 c
// 3 c,4]
}
func ExampleReader_Value() {
r := yacr.DefaultReader(strings.NewReader("1,\"2\",3,4"))
fmt.Print("[")
var i int
for r.Scan() {
if err := r.Value(&i); err != nil {
fmt.Println(err)
break
}
fmt.Print(i)
if r.EndOfRecord() {
fmt.Print("]\n")
} else {
fmt.Print(" ")
}
}
if err := r.Err(); err != nil {
fmt.Println(err)
}
// Output: [1 2 3 4]
}
func ExampleReader_ScanRecord() {
r := yacr.DefaultReader(strings.NewReader("11,12,13,14\n21,22,23,24\n31,32,33,34\n41,42,43,44"))
fmt.Print("[")
var i1, i2, i3, i4 int
for {
if n, err := r.ScanRecord(&i1, &i2, &i3, &i4); err != nil {
fmt.Println(err)
break
} else if n != 4 {
break
}
fmt.Println(i1, i2, i3, i4)
}
fmt.Print("]")
// Output: [11 12 13 14
// 21 22 23 24
// 31 32 33 34
// 41 42 43 44
// ]
}
func Example_writer() {
w := yacr.DefaultWriter(os.Stdout)
for _, field := range []string{"c1", "c\"2", "c\n3", "c,4"} {
if !w.WriteString(field) {
break
}
}
w.Flush()
if err := w.Err(); err != nil {
_, _ = fmt.Fprintln(os.Stderr, err)
}
// Output: c1,"c""2","c
// 3","c,4"
}