Exemplo n.º 1
0
        private void ParseMethod()
        {
            AEvaluator methodName = Pop();

            if (methodName.EvalType != EEvaluatorType.Getter)
            {
                throw new TemplateParserException(ETemplateParserError.Method_IncorrectName, PeekToken());
            }
            MethodEvaluator method = new MethodEvaluator(methodName.ToString());
            int             count  = m_Evaluators.Count;

            while (HasTokens() && PeekToken().Value[0] != TemplateConst.PARENT_CLOSE)
            {
                ParseAccess();
            }

            ConsumeToken();

            for (int x = count; x < m_Evaluators.Count; x++)
            {
                method.AddArgument(m_Evaluators[x]);
            }

            while (m_Evaluators.Count > count)
            {
                Pop();
            }
            Push(method);
        }
Exemplo n.º 2
0
        private void ParseDotGetter()
        {
            AEvaluator value = Pop();
            AEvaluator key   = Pop();

            Push(new DotGetterEvaluator(key, value));
        }
Exemplo n.º 3
0
        private AEvaluator Pop()
        {
            int        last      = m_Evaluators.Count - 1;
            AEvaluator evaluator = m_Evaluators[last];

            m_Evaluators.RemoveAt(last);
            return(evaluator);
        }
Exemplo n.º 4
0
        private void CompileObject(StringBuilder sb, object context)
        {
            int count = m_Evaluators.Count;

            for (int x = 0; x < count; x++)
            {
                AEvaluator evaluator = m_Evaluators[x];
                object     result    = evaluator.Evaluate(context);
                if (result != null)
                {
                    sb.Append(result.ToString());
                }
            }
        }
Exemplo n.º 5
0
        protected override TextTemplate Parse()
        {
            while (HasTokens())
            {
                ParseTokens();
            }

            int evalCount = m_Evaluators.Count;

            if (evalCount > 0)
            {
                TextTemplate template = new TextTemplate();
                for (int x = 0; x < m_Evaluators.Count; x++)
                {
                    AEvaluator evaluator = m_Evaluators[x];
                    template.AddEvalautor(evaluator);
                }
                return(template);
            }
            return(null);
        }
Exemplo n.º 6
0
 private void Push(AEvaluator evaluator)
 {
     m_Evaluators.Add(evaluator);
 }
Exemplo n.º 7
0
 public DotGetterEvaluator(AEvaluator key, AEvaluator value)
 {
     m_Key   = key;
     m_Value = value;
 }