private static void ConfigureViewModelSettings(ViewModelSettings vm, NamespaceSettings ns, RenderSettings settings, string entity = null, string entityNamespace = null) { // view model type can not be null or empty; so if possible we'll come up with one // using the entity name if not given, otherwise we fail if (string.IsNullOrWhiteSpace(vm.type)) { if (!string.IsNullOrWhiteSpace(entity)) { vm.type = $"{ns.vmDefaults.typePrefix}{entity}{ns.vmDefaults.typeSuffix}"; } else { throw new InvalidRenderSettingsException("Parameter 'type' is required for adjunct view model definitions"); } } // inherit emit to directory from namespace view model setting defaults if not // specified vm.emitTo = vm.emitTo ?? ns.vmDefaults.emitTo; vm.emitTo = EstablishSettingsDirectory(settings.emitDir, vm.emitTo, "View model source file directory ('emitTo')"); vm.EntityNamespace(entityNamespace); vm.EntityType(entity); vm.ViewModelNamespace(ns.mapToNamespace); InheritViewModelSettingsBase(vm, ns.vmDefaults); AssertPropertyDefinitionsValid(vm); AssertCollectionDefinitionsValid(vm); }
public static void IncludeViewModelSettings(RenderSettings settings, ViewModelSettings vm) { // get target namespace var ns = settings.namespaces[vm.EntityNamespace()]; // merge existing view model settings, if there are any if (ns.viewModels.ContainsKey(vm.EntityType())) { var xVM = ns.viewModels[vm.EntityType()]; vm.type = vm.type ?? xVM.type; vm.emitTo = vm.emitTo ?? xVM.emitTo; InheritViewModelSettingsBase(vm, xVM); // replace existing model with one merged with attribute settings ns.viewModels[vm.EntityType()] = vm; } // if no settings exist, merge with view model defaults for namespace and add it in else { ConfigureViewModelSettings(vm, ns, settings, vm.EntityType(), vm.EntityNamespace()); ns.viewModels.Add(vm.EntityType(), vm); } }