aboutsummaryrefslogtreecommitdiff
path: root/model/doc.go
diff options
context:
space:
mode:
author2026-02-17 21:33:24 +0300
committer2026-02-17 21:33:24 +0300
commit51abb67b77ee9f0f33f641711df9b0c9b4d14263 (patch)
tree7c44e3455b1ab179628188215cbee0da4981fe98 /model/doc.go
parentinit (diff)
downloadconf-51abb67b77ee9f0f33f641711df9b0c9b4d14263.tar.gz
conf-51abb67b77ee9f0f33f641711df9b0c9b4d14263.tar.bz2
conf-51abb67b77ee9f0f33f641711df9b0c9b4d14263.tar.xz
conf-51abb67b77ee9f0f33f641711df9b0c9b4d14263.zip
Diffstat (limited to '')
-rw-r--r--model/doc.go43
1 files changed, 33 insertions, 10 deletions
diff --git a/model/doc.go b/model/doc.go
index 76f03e4..9c13a4c 100644
--- a/model/doc.go
+++ b/model/doc.go
@@ -1,18 +1,41 @@
package model
-type Doc []any
+type Doc struct {
+ items []any
+ vars map[string]Values
+ commands map[string]Commands
+}
-type Assignment struct {
- Key string
- Value []Value
+func New(cap int) *Doc {
+ return &Doc{
+ items: make([]any, 0, cap),
+ vars: make(map[string]Values, cap),
+ commands: make(map[string]Commands, cap),
+ }
}
-type Command struct {
- Name string
- Arguments []Value
- Body Doc
+func (d *Doc) AppendAssignment(e *Assignment) {
+ d.items = append(d.items, e)
+ d.vars[e.Key] = append(d.vars[e.Key], e.Value...)
}
-type Value any
+func (d *Doc) AppendCommand(c *Command) {
+ d.items = append(d.items, c)
+ d.commands[c.Name] = append(d.commands[c.Name], c)
+}
-type Word string
+func (d *Doc) Vars() map[string]Values {
+ return d.vars
+}
+
+func (d *Doc) Get(key string) Values {
+ return d.vars[key]
+}
+
+func (d *Doc) Commands(name string) Commands {
+ return d.commands[name]
+}
+
+func (d *Doc) Items() []any {
+ return d.items
+}