コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }