From 51abb67b77ee9f0f33f641711df9b0c9b4d14263 Mon Sep 17 00:00:00 2001 From: Alexander Neonxp Kiryukhin Date: Tue, 17 Feb 2026 21:33:24 +0300 Subject: v0.0.1 --- model/doc.go | 43 +++++++++++++++++++++++++++++++++---------- 1 file changed, 33 insertions(+), 10 deletions(-) (limited to 'model/doc.go') 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 +} -- cgit v1.2.3