/
meta.go
47 lines (41 loc) · 1013 Bytes
/
meta.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
package mwire
import (
_ "embed"
"fmt"
"github.com/gomelon/meta"
"strconv"
"text/template"
)
//go:embed wire.tmpl
var TmplWire string
func DefaultPkgGenFactory() meta.PkgGenFactory {
pkgParser := meta.NewPkgParser()
return meta.NewTmplPkgGenFactory(TmplWire,
meta.WithOutputFilename("wire_set"),
meta.WithPkgParser(pkgParser),
meta.WithMetaParser(meta.NewParser(pkgParser)),
meta.WithFuncMapFactory(
func(gen *meta.TmplPkgGen) template.FuncMap {
return NewFunctions(gen).FuncMap()
},
),
)
}
const (
MetaWireProvider = "wire:provider"
)
var (
MetaNames = []string{MetaWireProvider}
)
//Order It is the injection order,lower values have higher priority(closer it is to the realization).
func Order(m *meta.Meta) int32 {
orderStr := m.Property("order")
if len(orderStr) == 0 {
return 0
}
order, err := strconv.ParseInt(orderStr, 10, 32)
if err != nil {
panic(fmt.Errorf("wire:provider get order fails: expected a int value,order=%s", orderStr))
}
return int32(order)
}