From 776b1fddc36b6bb3c53da40124b4e2576d829214 Mon Sep 17 00:00:00 2001 From: Martino Ferrari Date: Wed, 28 Jan 2026 01:18:09 +0100 Subject: [PATCH] removed project node from output --- internal/builder/builder.go | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/internal/builder/builder.go b/internal/builder/builder.go index bb6f6f1..0751861 100644 --- a/internal/builder/builder.go +++ b/internal/builder/builder.go @@ -56,27 +56,44 @@ func (b *Builder) Build(f *os.File) error { tree.AddFile(file, config) } + // Determine root node to print + rootNode := tree.Root + if expectedProject != "" { + if child, ok := tree.Root.Children[expectedProject]; ok { + rootNode = child + } + } + // Write entire root content (definitions and children) to the single output file - b.writeNodeContent(f, tree.Root, 0) + b.writeNodeBody(f, rootNode, 0) return nil } func (b *Builder) writeNodeContent(f *os.File, node *index.ProjectNode, indent int) { - // 1. Sort Fragments: Class first - sort.SliceStable(node.Fragments, func(i, j int) bool { - return hasClass(node.Fragments[i]) && !hasClass(node.Fragments[j]) - }) - indentStr := strings.Repeat(" ", indent) // If this node has a RealName (e.g. +App), we print it as an object definition if node.RealName != "" { fmt.Fprintf(f, "%s%s = {\n", indentStr, node.RealName) indent++ - indentStr = strings.Repeat(" ", indent) } + b.writeNodeBody(f, node, indent) + + if node.RealName != "" { + indent-- + indentStr = strings.Repeat(" ", indent) + fmt.Fprintf(f, "%s}\n", indentStr) + } +} + +func (b *Builder) writeNodeBody(f *os.File, node *index.ProjectNode, indent int) { + // 1. Sort Fragments: Class first + sort.SliceStable(node.Fragments, func(i, j int) bool { + return hasClass(node.Fragments[i]) && !hasClass(node.Fragments[j]) + }) + writtenChildren := make(map[string]bool) // 2. Write definitions from fragments @@ -110,12 +127,6 @@ func (b *Builder) writeNodeContent(f *os.File, node *index.ProjectNode, indent i child := node.Children[k] b.writeNodeContent(f, child, indent) } - - if node.RealName != "" { - indent-- - indentStr = strings.Repeat(" ", indent) - fmt.Fprintf(f, "%s}\n", indentStr) - } } func (b *Builder) writeDefinition(f *os.File, def parser.Definition, indent int) {