-
Notifications
You must be signed in to change notification settings - Fork 0
/
tag.go
51 lines (40 loc) · 907 Bytes
/
tag.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
// Copyright 2022 Sergey Novichkov. All rights reserved.
// For the full copyright and license information, please view the LICENSE
// file that was distributed with this source code.
package di
type (
// Arg is representation.
Arg struct {
Key string
Value string
}
// Args is arg collection.
Args []Arg
// Tag is tag representation.
Tag struct {
Name string
Args Args
}
// Tags is tag collection.
Tags []Tag
)
var (
// Tags implements the AddOption interface.
_ AddOption = (*Tags)(nil)
// Tags implements the ProvideOption interface.
_ ProvideOption = (*Tags)(nil)
)
func (t Tags) applyAddOption(def *definition) {
def.tags = append(def.tags, t...)
}
func (t Tags) applyProvideOption(def *definition) {
def.tags = append(def.tags, t...)
}
func (t Tags) contains(name string) bool {
for _, t1 := range t {
if t1.Name == name {
return true
}
}
return false
}