-
-
Notifications
You must be signed in to change notification settings - Fork 30
/
option.go
57 lines (49 loc) · 1.09 KB
/
option.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
package card
var _ Element = (*OptionBlock)(nil)
// OptionBlock 选项元素
type OptionBlock struct {
text, value, url string
multiURL *URLBlock
}
type optionRenderer struct {
Text Renderer `json:"text,omitempty"`
Value string `json:"value"`
URL string `json:"url,omitempty"`
MultiURL Renderer `json:"multi_url,omitempty"`
}
// Render 渲染为 Renderer
func (o *OptionBlock) Render() Renderer {
ret := optionRenderer{
Value: o.value,
URL: o.url,
}
if o.text != "" {
ret.Text = Text(o.text).Render()
}
if o.multiURL != nil {
ret.MultiURL = o.multiURL.Render()
}
return ret
}
// Option 选项模块,可用于 SelectMenu 和 Overflow
func Option(value string) *OptionBlock {
return &OptionBlock{
value: value,
text: value,
}
}
// Text 选项显示内容
func (o *OptionBlock) Text(s string) *OptionBlock {
o.text = s
return o
}
// URL 选项跳转链接
func (o *OptionBlock) URL(u string) *OptionBlock {
o.url = u
return o
}
// MultiURL 选项多端跳转链接
func (o *OptionBlock) MultiURL(u *URLBlock) *OptionBlock {
o.multiURL = u
return o
}