-
Notifications
You must be signed in to change notification settings - Fork 2
/
variate.go
30 lines (26 loc) · 1004 Bytes
/
variate.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
package gisk
type Variate struct {
Key string `json:"key" yaml:"key"` //唯一标识
Name string `json:"name" yaml:"name"` //变量名称
Desc string `json:"desc" yaml:"desc"` //描述
Version string `json:"version" yaml:"version"` //版本
ValueType ValueType `json:"value_type" yaml:"value_type"` //值类型
Default interface{} `json:"default" yaml:"default"` //默认值
IsInput bool `json:"is_input" yaml:"is_input"` //是否要从输入值中匹配
}
func (variate *Variate) Parse(gisk *Gisk) (Value Value, err error) {
if Value, ok := gisk.Context.GetVariate(variate.Key); ok {
return Value, nil
}
v := variate.Default
if variate.IsInput {
if input, ok := gisk.Input[variate.Key]; ok {
v = input
}
}
value, err := ConvertValueType(v, variate.ValueType)
Value.ValueType = variate.ValueType
Value.Value = value
gisk.Context.SetVariate(variate.Key, Value)
return
}