private void QuestionValueAssignedCommand_Execute(QuestionViewModel target) { IValue memoryValue; if (!_memory.TryRetrieveValue(target.Id, out memoryValue)) { memoryValue = _valueFactory.CreateDefaultValue(_symbols[target.Id].Type); } _memory.AssignValue(target.Id, _valueFactory.CreateValue(target.Value, memoryValue.Type)); _mainViewModel.Form = RebuildQuestionnaire(_qlAst); }
public override Node Visit(QuestionNode question) { var questionNode = new QuestionNode(question.Token, question.Description, question.Label, question.IsEvaluated, question.Type); foreach (var expression in question.ChildNodes) { var evaluatedNode = expression.Accept(this) as LiteralNode; _memory.AssignValue(question.Label, _valueFactory.CreateValueFromString(evaluatedNode.Value, question.Type)); questionNode.AddChild(evaluatedNode); } if (!questionNode.ChildNodes.Any()) { IValue memoryValue; if (!_memory.TryRetrieveValue(question.Label, out memoryValue)) { memoryValue = _valueFactory.CreateDefaultValue(question.Type); } questionNode.ChildNodes.Add(new LiteralNode(question.Token, memoryValue.ToString(), question.Type)); } return(questionNode); }