public object this[string key] { get { if (_values.TryGetValue(key, out object result)) { ValueReadEventArgs args = new ValueReadEventArgs(key, result); OnValueRead(args); return(result); } if (_parent?.TryGetValue(key, out result) ?? false) { return(result); } throw new KeyNotFoundException($"No entry was found for key: {key}"); } set { bool changing = !_values.ContainsKey(key); _values[key] = value; if (changing) { OnKeysChanged(); } } }
public void EvaluateConfig(IEngineEnvironmentSettings environmentSettings, IVariableCollection vars, IMacroConfig rawConfig, IParameterSet parameters, ParameterSetter setter) { string value = null; RegexMacroConfig config = rawConfig as RegexMacroConfig; if (config == null) { throw new InvalidCastException("Couldn't cast the rawConfig as RegexMacroConfig"); } if (!vars.TryGetValue(config.SourceVariable, out object working)) { if (parameters.TryGetRuntimeValue(environmentSettings, config.SourceVariable, out object resolvedValue, true)) { value = resolvedValue.ToString(); } else { value = string.Empty; } }
public void EvaluateConfig( IEngineEnvironmentSettings environmentSettings, IVariableCollection vars, IMacroConfig rawConfig, IParameterSet parameters, ParameterSetter setter) { JoinMacroConfig config = rawConfig as JoinMacroConfig; if (config == null) { throw new InvalidCastException("Couldn't cast the rawConfig as ConcatenationMacroConfig"); } List <string> values = new List <string>(); foreach (KeyValuePair <string, string> symbol in config.Symbols) { switch (symbol.Key) { case "ref": string value; if (!vars.TryGetValue(symbol.Value, out object working)) { if (parameters.TryGetRuntimeValue( environmentSettings, symbol.Value, out object resolvedValue, true)) { value = resolvedValue.ToString(); } else { value = string.Empty; } }
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; string datatype = realConfig.DataType; if (vars.TryGetValue(realConfig.SourceVariableName, out object currentSourceValue) && !Equals(currentSourceValue ?? string.Empty, realConfig.DefaultValue ?? string.Empty)) { targetValue = currentSourceValue; if (parameters.TryGetParameterDefinition(realConfig.SourceVariableName, out ITemplateParameter sourceParameter)) { datatype = sourceParameter.DataType; } } 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; } else if (parameters.TryGetParameterDefinition(realConfig.FallbackVariableName, out ITemplateParameter sourceParameter)) { datatype = sourceParameter.DataType; } } 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; if (string.IsNullOrEmpty(p.DataType)) { p.DataType = datatype; } } else { p = new Parameter { IsVariable = true, Name = config.VariableName, DataType = datatype }; } vars[config.VariableName] = targetValue?.ToString(); setter(p, targetValue?.ToString()); }