using NubLang.Parsing.Syntax; namespace NubLang.Modules; public class ModuleRepository { private readonly Dictionary _modules = new(); public ModuleRepository(List syntaxTrees) { foreach (var syntaxTree in syntaxTrees) { var module = GetOrCreate(syntaxTree.Metadata.ModuleName); ProcessSyntaxTree(module, syntaxTree); } } private static void ProcessSyntaxTree(Module module, SyntaxTree syntaxTree) { foreach (var definition in syntaxTree.Definitions) { module.Register(definition); } } public Dictionary Modules() { return _modules; } private Module GetOrCreate(string name) { if (!_modules.TryGetValue(name, out var module)) { module = new Module(); _modules[name] = module; } return module; } }