feat(variables): implemented a list of strings value type for template variables
This commit is contained in:
parent
db5cba791e
commit
784ba6bc86
2 changed files with 32 additions and 2 deletions
|
@ -3,6 +3,7 @@ package gonf
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"log/slog"
|
"log/slog"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Value interface {
|
type Value interface {
|
||||||
|
@ -71,6 +72,21 @@ func (i IntValue) String() string {
|
||||||
return string(i.value)
|
return string(i.value)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ----- StringsListValue ------------------------------------------------------
|
||||||
|
type StringsListValue struct {
|
||||||
|
value []string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *StringsListValue) Append(v ...string) {
|
||||||
|
s.value = append(s.value, v...)
|
||||||
|
}
|
||||||
|
func (s StringsListValue) Bytes() []byte {
|
||||||
|
return []byte(s.String())
|
||||||
|
}
|
||||||
|
func (s StringsListValue) String() string {
|
||||||
|
return strings.Join(s.value, "\n")
|
||||||
|
}
|
||||||
|
|
||||||
// ----- StringValue -----------------------------------------------------------
|
// ----- StringValue -----------------------------------------------------------
|
||||||
type StringValue struct {
|
type StringValue struct {
|
||||||
value string
|
value string
|
||||||
|
@ -83,8 +99,6 @@ func (s StringValue) String() string {
|
||||||
return s.value
|
return s.value
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO lists
|
|
||||||
|
|
||||||
// TODO maps
|
// TODO maps
|
||||||
|
|
||||||
// TODO what else?
|
// TODO what else?
|
||||||
|
|
|
@ -14,6 +14,22 @@ func init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----- Public ----------------------------------------------------------------
|
// ----- Public ----------------------------------------------------------------
|
||||||
|
func AppendVariable(name string, values ...string) *VariablePromise {
|
||||||
|
if v, ok := variables[name]; ok {
|
||||||
|
if l, ok := v.value.(*StringsListValue); ok {
|
||||||
|
l.Append(values...)
|
||||||
|
}
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
v := &VariablePromise{
|
||||||
|
isDefault: false,
|
||||||
|
name: name,
|
||||||
|
value: &StringsListValue{values},
|
||||||
|
}
|
||||||
|
variables[name] = v
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
|
||||||
func Default(name string, value string) *VariablePromise {
|
func Default(name string, value string) *VariablePromise {
|
||||||
if v, ok := variables[name]; ok {
|
if v, ok := variables[name]; ok {
|
||||||
if !v.isDefault {
|
if !v.isDefault {
|
||||||
|
|
Loading…
Add table
Reference in a new issue