aboutsummaryrefslogtreecommitdiff
path: root/model/doc.go
blob: 9c13a4cc597e6ef82360709218daacfc05a57118 (plain) (blame)
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
31
32
33
34
35
36
37
38
39
40
41
package model

type Doc struct {
	items    []any
	vars     map[string]Values
	commands map[string]Commands
}

func New(cap int) *Doc {
	return &Doc{
		items:    make([]any, 0, cap),
		vars:     make(map[string]Values, cap),
		commands: make(map[string]Commands, cap),
	}
}

func (d *Doc) AppendAssignment(e *Assignment) {
	d.items = append(d.items, e)
	d.vars[e.Key] = append(d.vars[e.Key], e.Value...)
}

func (d *Doc) AppendCommand(c *Command) {
	d.items = append(d.items, c)
	d.commands[c.Name] = append(d.commands[c.Name], c)
}

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
}