Exemple #1
0
        public override IEnumerable <object> ConvertTokens(IEnumerable <object> sequence)
        {
            var enumerator = sequence.GetEnumerator();

            while (enumerator.MoveNext())
            {
                var item = enumerator.Current;
                if (item is HelperExpression)
                {
                    var helper = item as HelperExpression;
                    item = GetNext(enumerator);
                    List <Expression> helperArguments = new List <Expression>();
                    while ((item is EndExpressionToken) == false)
                    {
                        if ((item is Expression) == false)
                        {
                            throw new HandlebarsCompilerException(
                                      string.Format("Token '{0}' could not be converted to an expression", item));
                        }
                        helperArguments.Add((Expression)item);
                        item = GetNext(enumerator);
                    }
                    yield return(HandlebarsExpression.Helper(
                                     helper.HelperName,
                                     helperArguments));

                    yield return(item);
                }
                else
                {
                    yield return(item);
                }
            }
        }
Exemple #2
0
        public override IEnumerable <object> ConvertTokens(IEnumerable <object> sequence)
        {
            var enumerator = sequence.GetEnumerator();

            while (enumerator.MoveNext())
            {
                var item = enumerator.Current;
                if (item is StartExpressionToken)
                {
                    yield return(item);

                    item = GetNext(enumerator);
                    if (item is Expression)
                    {
                        yield return(item);

                        continue;
                    }
                    if ((item is WordExpressionToken) == false)
                    {
                        throw new HandlebarsCompilerException("Encountered a non-word symbol at the beginning of the handlebars expression.");
                    }
                    var word = item as WordExpressionToken;
                    if (IsRegisteredHelperName(word.Value))
                    {
                        yield return(HandlebarsExpression.Helper(word.Value));
                    }
                    else
                    {
                        yield return(word);
                    }
                }
                else
                {
                    yield return(item);
                }
            }
        }
Exemple #3
0
 protected override Expression VisitHelperExpression(HelperExpression hex)
 {
     return(HandlebarsExpression.Helper(
                hex.HelperName,
                hex.Arguments.Select(arg => Visit(arg))));
 }