public JsEvaluationViewModel Evaluate(JsEvaluationViewModel model)
{
IJsEngine engine = null;
var result = new JsEvaluationResultViewModel();
try
{
engine = _engineSwitcher.CreateEngine(model.EngineName);
result.Value = engine.Evaluate<string>(model.Expression);
}
catch (JsEngineLoadException e)
{
var error = GetJsEvaluationErrorFromException(e);
result.Errors.Add(error);
}
catch (JsRuntimeException e)
{
var error = GetJsEvaluationErrorFromException(e);
error.LineNumber = e.LineNumber;
error.ColumnNumber = e.ColumnNumber;
error.SourceFragment = e.SourceFragment;
result.Errors.Add(error);
}
finally
{
if (engine != null)
{
engine.Dispose();
}
}
model.Result = result;
return model;
}