public void EvaluateConfig(IEngineEnvironmentSettings environmentSettings, IVariableCollection vars, IMacroConfig config, IParameterSet parameters, ParameterSetter setter) { CoalesceMacroConfig realConfig = config as CoalesceMacroConfig; if (realConfig == null) { throw new InvalidCastException("Unable to cast config as a CoalesceMacroConfig"); } object targetValue = null; if (vars.TryGetValue(realConfig.SourceVariableName, out object currentSourceValue) && !Equals(currentSourceValue ?? string.Empty, realConfig.DefaultValue ?? string.Empty)) { targetValue = currentSourceValue; } else { if (!vars.TryGetValue(realConfig.FallbackVariableName, out targetValue)) { environmentSettings.Host.LogDiagnosticMessage("Unable to find a variable to fall back to called " + realConfig.FallbackVariableName, "Authoring", realConfig.SourceVariableName, realConfig.DefaultValue); targetValue = realConfig.DefaultValue; } } Parameter pd = new Parameter { IsVariable = true, Name = config.VariableName }; vars[config.VariableName] = targetValue?.ToString(); setter(pd, targetValue?.ToString()); }
public IMacroConfig CreateConfig(IEngineEnvironmentSettings environmentSettings, IMacroConfig rawConfig) { GeneratedSymbolDeferredMacroConfig deferredConfig = rawConfig as GeneratedSymbolDeferredMacroConfig; if (deferredConfig == null) { throw new InvalidCastException("Couldn't cast the rawConfig as a GeneratedSymbolDeferredMacroConfig"); } string sourceVariableName = null; if (deferredConfig.Parameters.TryGetValue("sourceVariableName", out JToken sourceVariableToken) && sourceVariableToken.Type == JTokenType.String) { sourceVariableName = sourceVariableToken.ToString(); } string defaultValue = null; if (deferredConfig.Parameters.TryGetValue("defaultValue", out JToken defaultValueToken) && defaultValueToken.Type == JTokenType.String) { defaultValue = defaultValueToken.ToString(); } string fallbackVariableName = null; if (deferredConfig.Parameters.TryGetValue("fallbackVariableName", out JToken fallbackVariableNameToken) && fallbackVariableNameToken.Type == JTokenType.String) { fallbackVariableName = fallbackVariableNameToken.ToString(); } IMacroConfig realConfig = new CoalesceMacroConfig(deferredConfig.VariableName, deferredConfig.DataType, sourceVariableName, defaultValue, fallbackVariableName); return(realConfig); }
public void EvaluateConfig(IEngineEnvironmentSettings environmentSettings, IVariableCollection vars, IMacroConfig config, IParameterSet parameters, ParameterSetter setter) { CoalesceMacroConfig realConfig = config as CoalesceMacroConfig; if (realConfig == null) { throw new InvalidCastException("Unable to cast config as a CoalesceMacroConfig"); } object targetValue = null; if (vars.TryGetValue(realConfig.SourceVariableName, out object currentSourceValue) && !Equals(currentSourceValue ?? string.Empty, realConfig.DefaultValue ?? string.Empty)) { targetValue = currentSourceValue; } else { if (!vars.TryGetValue(realConfig.FallbackVariableName, out targetValue)) { environmentSettings.Host.LogDiagnosticMessage("Unable to find a variable to fall back to called " + realConfig.FallbackVariableName, "Authoring", realConfig.SourceVariableName, realConfig.DefaultValue); targetValue = realConfig.DefaultValue; } } Parameter p; if (parameters.TryGetParameterDefinition(config.VariableName, out ITemplateParameter existingParam)) { // If there is an existing parameter with this name, it must be reused so it can be referenced by name // for other processing, for example: if the parameter had value forms defined for creating variants. // When the param already exists, use its definition, but set IsVariable = true for consistency. p = (Parameter)existingParam; p.IsVariable = true; } else { p = new Parameter { IsVariable = true, Name = config.VariableName }; } vars[config.VariableName] = targetValue?.ToString(); setter(p, targetValue?.ToString()); }