From d3fd3ba6f9796df96ec4eae9124a460fbb05eb59 Mon Sep 17 00:00:00 2001 From: Alexander Neonxp Kiryukhin Date: Mon, 16 Feb 2026 21:37:31 +0300 Subject: init --- loader.go | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 loader.go (limited to 'loader.go') diff --git a/loader.go b/loader.go new file mode 100644 index 0000000..d9bc9e4 --- /dev/null +++ b/loader.go @@ -0,0 +1,36 @@ +package conf + +import ( + "fmt" + "os" + + "go.neonxp.ru/conf/internal/ast" + "go.neonxp.ru/conf/internal/parser" + "go.neonxp.ru/conf/model" +) + +func LoadFile(filename string) (model.Doc, error) { + content, err := os.ReadFile(filename) + if err != nil { + return nil, fmt.Errorf("failed load file: %w", err) + } + + return Load(filename, content) +} + +func Load(name string, input []byte) (model.Doc, error) { + p := &parser.Parser{} + astSlice, err := p.Parse(name, input) + if err != nil { + return nil, fmt.Errorf("failed parse conf content: %w", err) + } + + astTree := ast.Parse(p, astSlice) + + doc, err := ast.ToDoc(astTree[0]) + if err != nil { + return nil, fmt.Errorf("failed build Doc: %w", err) + } + + return doc, nil +} -- cgit v1.2.3