public void EvaluateDeferredConfig(IEngineEnvironmentSettings environmentSettings, IVariableCollection vars, IMacroConfig rawConfig, IParameterSet parameters, ParameterSetter setter) { GeneratedSymbolDeferredMacroConfig deferredConfig = rawConfig as GeneratedSymbolDeferredMacroConfig; if (deferredConfig == null) { throw new InvalidCastException("Couldn't cast the rawConfig as a GeneratedSymbolDeferredMacroConfig"); } if (!deferredConfig.Parameters.TryGetValue("format", out JToken formatToken)) { throw new ArgumentNullException("format"); } string format = formatToken.ToString(); bool utc; if (deferredConfig.Parameters.TryGetValue("utc", out JToken utcToken)) { utc = utcToken.ToBool(); } else { utc = false; } IMacroConfig realConfig = new NowMacroConfig(deferredConfig.VariableName, format, utc); EvaluateConfig(environmentSettings, vars, realConfig, parameters, setter); }
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"); } if (!deferredConfig.Parameters.TryGetValue("format", out JToken formatToken)) { throw new ArgumentNullException("format"); } string format = formatToken.ToString(); bool utc; if (deferredConfig.Parameters.TryGetValue("utc", out JToken utcToken)) { utc = utcToken.ToBool(); } else { utc = false; } IMacroConfig realConfig = new NowMacroConfig(deferredConfig.VariableName, deferredConfig.DataType, format, utc); return(realConfig); }
public void EvaluateNowConfig() { string variableName = "nowString"; string format = ""; bool utc = true; NowMacroConfig macroConfig = new NowMacroConfig(variableName, format, utc); IVariableCollection variables = new VariableCollection(); IRunnableProjectConfig config = new SimpleConfigModel(); IParameterSet parameters = new ParameterSet(config); ParameterSetter setter = MacroTestHelpers.TestParameterSetter(EngineEnvironmentSettings, parameters); NowMacro macro = new NowMacro(); macro.EvaluateConfig(EngineEnvironmentSettings, variables, macroConfig, parameters, setter); ITemplateParameter resultParam; Assert.True(parameters.TryGetParameterDefinition(variableName, out resultParam)); string macroNowString = (string)parameters.ResolvedValues[resultParam]; DateTime macroNowTime = Convert.ToDateTime(macroNowString); TimeSpan difference = macroNowTime.Subtract(DateTime.UtcNow); // 10 seconds is quite a lot of wiggle room, but should be fine, and safe. Assert.True(difference.TotalSeconds < 10); }
public void EvaluateConfig(IEngineEnvironmentSettings environmentSettings, IVariableCollection vars, IMacroConfig rawConfig, IParameterSet parameters, ParameterSetter setter) { NowMacroConfig config = rawConfig as NowMacroConfig; if (config == null) { throw new InvalidCastException("Couldn't cast the rawConfig as NowMacroConfig"); } DateTime time = config.Utc ? DateTime.UtcNow : DateTime.Now; string value = time.ToString(config.Format); 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] = value; setter(p, value); }
public void EvaluateConfig(IEngineEnvironmentSettings environmentSettings, IVariableCollection vars, IMacroConfig rawConfig, IParameterSet parameters, ParameterSetter setter) { NowMacroConfig config = rawConfig as NowMacroConfig; if (config == null) { throw new InvalidCastException("Couldn't cast the rawConfig as NowMacroConfig"); } DateTime time = config.Utc ? DateTime.UtcNow : DateTime.Now; string value = time.ToString(config.Format); Parameter p = new Parameter { IsVariable = true, Name = config.VariableName }; setter(p, value); }