-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathoptions.go
72 lines (57 loc) · 1.7 KB
/
options.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
package kid
import (
htmlrenderer "github.com/mojixcoder/kid/html_renderer"
"github.com/mojixcoder/kid/serializer"
)
type (
// Option is the interface for customizing Kid.
Option interface {
apply(*Kid)
}
optionImpl func(*Kid)
)
// applyOption implements the Option interface.
func (f optionImpl) apply(k *Kid) {
f(k)
}
// WithDebug configures Kid's debug option.
func WithDebug(debug bool) Option {
return optionImpl(func(k *Kid) {
k.debug = debug
})
}
// WithHTMLRenderer configures Kid's HTML renderer.
func WithHTMLRenderer(renderer htmlrenderer.HTMLRenderer) Option {
panicIfNil(renderer, "renderer cannot be nil")
return optionImpl(func(k *Kid) {
k.htmlRenderer = renderer
})
}
// WithXMLSerializer configures Kid's XML serializer.
func WithXMLSerializer(serializer serializer.Serializer) Option {
panicIfNil(serializer, "xml serializer cannot be nil")
return optionImpl(func(k *Kid) {
k.xmlSerializer = serializer
})
}
// WithJSONSerializer configures Kid's JSON serializer.
func WithJSONSerializer(serializer serializer.Serializer) Option {
panicIfNil(serializer, "json serializer cannot be nil")
return optionImpl(func(k *Kid) {
k.jsonSerializer = serializer
})
}
// WithNotFoundHandler configures Kid's not found handler.
func WithNotFoundHandler(handler HandlerFunc) Option {
panicIfNil(handler, "not found handler cannot be nil")
return optionImpl(func(k *Kid) {
k.notFoundHandler = handler
})
}
// WithMethodNotAllowedHandler configures Kid's method not allowed handler.
func WithMethodNotAllowedHandler(handler HandlerFunc) Option {
panicIfNil(handler, "method not allowed handler cannot be nil")
return optionImpl(func(k *Kid) {
k.methodNotAllowedHandler = handler
})
}