public object Eval(XValue value, Dictionary<string, object> modules, ContextParameterList parameters) { if (value.Expression != null) return EvalScript(value.Expression, modules, parameters); else return value.Value; }
private object EvalScript(IScriptExpression expression, Dictionary<string, object> modules, ContextParameterList parameters) { var argParameters = new ScriptParameterList(); foreach (var m in modules) argParameters.Add(new ScriptParameter(m.Key, m.Value.GetType(), m.Value)); foreach (var p in parameters) argParameters.Add(new ScriptParameter(p.Name, p.Type, p.Value)); return _scriptService.Eval(expression, argParameters); }
public void It_should_be_possible_to_eval_constant() { PageScriptService target = new PageScriptService(null); IContext context = new Mocks.ContextMock(); ModuleDefinitionList modulesDefinition = new ModuleDefinitionList(); PageParameterList pageParameters = new PageParameterList(); Dictionary<string, object> modules = new Dictionary<string, object>(); ContextParameterList parameters = new ContextParameterList(); XValue exp; exp = target.Parse("ciao", typeof(string), modulesDefinition, pageParameters); Assert.AreEqual("ciao", target.Eval(exp, modules, parameters)); exp = target.Parse("459", typeof(int), modulesDefinition, pageParameters); Assert.AreEqual(459, target.Eval(exp, modules, parameters)); exp = target.Parse("0.59", typeof(double), modulesDefinition, pageParameters); Assert.AreEqual(0.59, target.Eval(exp, modules, parameters)); exp = target.Parse("01/02/2045", typeof(DateTime), modulesDefinition, pageParameters); Assert.AreEqual(new DateTime(2045, 01, 02), target.Eval(exp, modules, parameters)); }
public void It_should_be_possible_to_parse_and_eval_script_with_modules() { var scriptService = new Moq.Mock<IScriptService>(); scriptService.Setup(p => p.Parse("TestModule.Name", Moq.It.IsAny<ScriptParameterList>())).Returns(new Mocks.ScriptExpressionMock("TestModule.Name", typeof(string))); TestModule testModule = new TestModule(); ModuleDefinitionList modules = new ModuleDefinitionList(); modules.Add(new ModuleDefinition("TestModule", TestModule.Definition)); PageParameterList parameters = new PageParameterList(); PageScriptService target = new PageScriptService(scriptService.Object); XValue exp; exp = target.Parse("@TestModule.Name", typeof(string), modules, parameters); scriptService.Verify(p => p.Parse("TestModule.Name", Moq.It.IsAny<ScriptParameterList>())); Dictionary<string, object> modulesInstance = new Dictionary<string, object>(); modulesInstance.Add("TestModule", testModule); ContextParameterList parametersInstance = new ContextParameterList(); target.Eval(exp, modulesInstance, parametersInstance); scriptService.Verify(p => p.Eval(Moq.It.IsAny<IScriptExpression>(), Moq.It.IsAny<ScriptParameterList>())); }
public object Eval(XValue value, Dictionary<string, object> modules, ContextParameterList parameters) { return value.Expression.ToString(); }