-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathexample_test.go
129 lines (98 loc) · 2.25 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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
package parth_test
import (
"fmt"
"net/http"
"github.com/daved/parth"
)
var req, _ = http.NewRequest("GET", "/zero/1/2/key/nn4.4nn/5.5", nil)
func Example() {
var segFour string
if err := parth.Segment(&segFour, req.URL.Path, 4); err != nil {
fmt.Println(err)
}
fmt.Printf("%[1]v (%[1]T)\n", segFour)
// Output:
// nn4.4nn (string)
}
func ExampleSegment() {
var segFour string
if err := parth.Segment(&segFour, req.URL.Path, 4); err != nil {
fmt.Println(err)
}
fmt.Printf("%[1]v (%[1]T)\n", segFour)
// Output:
// nn4.4nn (string)
}
func ExampleSequent() {
var afterKey float32
if err := parth.Sequent(&afterKey, req.URL.Path, "key"); err != nil {
fmt.Println(err)
}
fmt.Printf("%[1]v (%[1]T)\n", afterKey)
// Output:
// 4.4 (float32)
}
func ExampleSpan() {
span, err := parth.Span(req.URL.Path, 2, 4)
if err != nil {
fmt.Println(err)
}
fmt.Println(span)
// Output:
// /2/key
}
func ExampleSubSeg() {
var twoAfterKey float64
if err := parth.SubSeg(&twoAfterKey, req.URL.Path, "key", 1); err != nil {
fmt.Println(err)
}
fmt.Printf("%[1]v (%[1]T)\n", twoAfterKey)
// Output:
// 5.5 (float64)
}
func ExampleSubSpan() {
subSpanZero, err := parth.SubSpan(req.URL.Path, "zero", 2, 4)
if err != nil {
fmt.Println(err)
}
subSpanOne, err := parth.SubSpan(req.URL.Path, "1", 1, 3)
if err != nil {
fmt.Println(err)
}
fmt.Println(subSpanZero)
fmt.Println(subSpanOne)
// Output:
// /key/nn4.4nn
// /key/nn4.4nn
}
func ExampleParth() {
var segZero string
var twoAfterKey float32
p := parth.New(req.URL.Path)
p.Segment(&segZero, 0)
p.SubSeg(&twoAfterKey, "key", 1)
if err := p.Err(); err != nil {
fmt.Println(err)
}
fmt.Printf("%[1]v (%[1]T)\n", segZero)
fmt.Printf("%[1]v (%[1]T)\n", twoAfterKey)
// Output:
// zero (string)
// 5.5 (float32)
}
type MyType []byte
// UnmarshalText implements encoding.TextUnmarshaler. Let's pretend something
// interesting is actually happening here.
func (m *MyType) UnmarshalText(text []byte) error {
*m = text
return nil
}
func Example_encodingTextUnmarshaler() {
var m MyType
if err := parth.Segment(&m, req.URL.Path, 4); err != nil {
fmt.Println(err)
}
fmt.Printf("%[1]v == %[1]q (%[1]T)\n", m)
// Output:
// [110 110 52 46 52 110 110] == "nn4.4nn" (parth_test.MyType)
}