diff options
| author | 2026-02-17 21:33:24 +0300 | |
|---|---|---|
| committer | 2026-02-21 16:23:10 +0300 | |
| commit | ba06314d59e55945b103ead2c7a9e01f58c6a93c (patch) | |
| tree | 34ab8ac19307da60bd5caf76d844a6dc2e730361 /model/value.go | |
| parent | init (diff) | |
| download | conf-ba06314d59e55945b103ead2c7a9e01f58c6a93c.tar.gz conf-ba06314d59e55945b103ead2c7a9e01f58c6a93c.tar.bz2 conf-ba06314d59e55945b103ead2c7a9e01f58c6a93c.tar.xz conf-ba06314d59e55945b103ead2c7a9e01f58c6a93c.zip | |
v0.0.1v0.0.1
Diffstat (limited to '')
| -rw-r--r-- | model/value.go | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/model/value.go b/model/value.go new file mode 100644 index 0000000..4ec7344 --- /dev/null +++ b/model/value.go @@ -0,0 +1,42 @@ +package model + +import ( + "strconv" + "strings" +) + +type Value any + +type Values []Value + +// BuildString собирает из значений Value цельную строку, при этом приводя все +// значения к типу string. Так же принимает функции типа WordLookup, которые +// последовательно будут пытаться привести значения типа Word к +// контекстозависимым значениям. Например, пытаться находить по имени переменную +// окружения ОС. +func (v Values) BuildString(lookups ...WordLookup) string { + sw := strings.Builder{} + + for _, v := range v { + switch v := v.(type) { + case string: + sw.WriteString(v) + case float64: + sw.WriteString(strconv.FormatFloat(v, 'f', 5, 64)) + case int: + sw.WriteString(strconv.Itoa(v)) + case bool: + if v { + sw.WriteString("true") + continue + } + sw.WriteString("false") + case Word: + sw.WriteString(chainLookup(lookups...)(v)) + } + } + + return sw.String() +} + +type Word string |
