aboutsummaryrefslogtreecommitdiff
path: root/model/body.go
diff options
context:
space:
mode:
author2026-02-22 20:15:50 +0300
committer2026-02-22 20:15:50 +0300
commitdb8bb97dfa2dacef002a1f349ea970d76fee4fc9 (patch)
tree7de11be3a01a6ef83a218dc98d90586dd1afb09a /model/body.go
parentДобавил утилитарные функции для моделей (diff)
downloadconf-db8bb97dfa2dacef002a1f349ea970d76fee4fc9.tar.gz
conf-db8bb97dfa2dacef002a1f349ea970d76fee4fc9.tar.bz2
conf-db8bb97dfa2dacef002a1f349ea970d76fee4fc9.tar.xz
conf-db8bb97dfa2dacef002a1f349ea970d76fee4fc9.zip
Refactoringv0.0.4
Diffstat (limited to 'model/body.go')
-rw-r--r--model/body.go28
1 files changed, 28 insertions, 0 deletions
diff --git a/model/body.go b/model/body.go
new file mode 100644
index 0000000..b7b4a0c
--- /dev/null
+++ b/model/body.go
@@ -0,0 +1,28 @@
+package model
+
+import (
+ "errors"
+ "fmt"
+)
+
+type Body []any
+
+var ErrInvalidType = errors.New("invalid type")
+
+func (d Body) Execute(v Visitor) error {
+ for _, it := range d {
+ switch it := it.(type) {
+ case *Setting:
+ if err := v.VisitSetting(it.Key, it.Value); err != nil {
+ return err
+ }
+ case *Directive:
+ if err := v.VisitDirective(it.Name, it.Arguments, it.Body); err != nil {
+ return err
+ }
+ default:
+ return fmt.Errorf("%w: %t", ErrInvalidType, it)
+ }
+ }
+ return nil
+}