public static GenerationUnit GenerateDrm(string src, string defaultProjNamespace, string filePath) { Code.NotNull(src, nameof(src)); Code.NotNullNorWhiteSpace(filePath, nameof(filePath)); RefTable.Instance.TryRemoveDeclarations(filePath); var cUnit = Compiler.Instance.CompileModuleOnFly(src, filePath); var cErrors = cUnit.Errors.Select(err => err.Flatten()).AsReadOnly(); if (cErrors.Count > 0) { return(GenerationUnit.Error(cErrors, filePath)); } var testDefs = cUnit .OnlyValidModules() .ValidModules .Select(x => new ModuleDefinition( x.Name, x.ClassRegistrations.Select(y => new DependencyRegistration(y.Dependency, y.Implementation)).AsReadOnly(), x.ModuleRegistrations.Select(y => new ModuleRegistration(y.Name)).AsReadOnly())) .AsReadOnly(); var templateModel = new ModuleTemplateModel(defaultProjNamespace, testDefs); var template = new ModuleTemplate(templateModel); var csSrc = template.TransformText(); return(GenerationUnit.Complete(Encoding.UTF8.GetBytes(csSrc), filePath)); }
public ModuleTemplate(ModuleTemplateModel model) { Code.NotNull(model, nameof(model)); Model = model; }