Пример #1
0
        static IRenderizable ParseIf(Token currentToken, List <Token> tokens, ref int index, Template mainTemplate)
        {
            var ifCondition = new IfCondition();

            if (tokens.Count <= index)
            {
                throw new TemplateException(string.Format("Invalid if condition at: {0}", currentToken.Position));
            }

            var condition = tokens[index];

            if (condition.Type == TokenType.Parameter)
            {
                ifCondition.ModelKey = condition.Value;
            }
            else
            {
                var function = ParseFunction(condition, tokens, ref index, null) as Function;
                if (function == null)
                {
                    throw new TemplateException(string.Format("Invalid if condition at: {0}", currentToken.Position));
                }
                ifCondition.Expression = function;
            }

            index++;
            ifCondition.Body = Parse(mainTemplate, tokens, ref index);

            // Parsear el else si existe
            if (tokens.Count >= index && tokens[index].Value == "else")
            {
                index++;
                ifCondition.ElseBody = Parse(mainTemplate, tokens, ref index);
            }

            return(ifCondition);
        }
Пример #2
0
		static IRenderizable ParseIf (Token currentToken, List<Token> tokens, ref int index, Template mainTemplate)
		{
			var ifCondition = new IfCondition();

			if(tokens.Count <= index)
			{
				throw new TemplateException(string.Format("Invalid if condition at: {0}", currentToken.Position));
			}

			var condition = tokens[index];
			if(condition.Type == TokenType.Parameter)
			{
				ifCondition.ModelKey = condition.Value;
			}
			else
			{
				var function = ParseFunction(condition, tokens, ref index, null) as Function;
				if(function == null)
				{
					throw new TemplateException(string.Format("Invalid if condition at: {0}", currentToken.Position));
				}
				ifCondition.Expression = function;
			}

			index++;
			ifCondition.Body = Parse(mainTemplate, tokens, ref index);

			// Parsear el else si existe
			if(tokens.Count >= index && tokens[index].Value == "else")
			{
				index++;
				ifCondition.ElseBody = Parse(mainTemplate, tokens, ref index);
			}
            
			return ifCondition;
		}