Exemplo n.º 1
0
        public LiquidString Render(
            RenderingVisitor renderingVisitor,
            MacroBlockTag macroBlocktag,
            ITemplateContext templateContext,
            IList <Option <ILiquidValue> > args)
        {
            var macroScope = new SymbolTable();

            var i = 0;

            foreach (var varName in macroBlocktag.Args.Take(args.Count))
            {
                macroScope.DefineLocalVariable(varName, args[i]);
                i++;
            }
            templateContext.SymbolTableStack.Push(macroScope);

            String hiddenText = "";

            renderingVisitor.PushTextAccumulator(str => hiddenText += str);
            renderingVisitor.StartWalking(macroBlocktag.LiquidBlock);
            renderingVisitor.PopTextAccumulator();

            templateContext.SymbolTableStack.Pop();

            return(LiquidString.Create(hiddenText));
        }
            private static String EvalLiquidBlock(RenderingVisitor renderingVisitor, TreeNode <IASTNode> liquidBlock)
            {
                String          result      = "";
                Action <String> accumulator = str => result += str;

                renderingVisitor.PushTextAccumulator(accumulator);
                renderingVisitor.StartWalking(liquidBlock);
                renderingVisitor.PopTextAccumulator();
                return(result);
            }
Exemplo n.º 3
0
        private string CaptureHiddenText(TreeNode <IASTNode> liquidBlock)
        {
            String hiddenText = "";

            _renderingVisitor.PushTextAccumulator(str => hiddenText += str);
            _renderingVisitor.StartWalking(liquidBlock);
            _renderingVisitor.PopTextAccumulator();

            return(hiddenText);
        }
            private LiquidString IterateBlock(
                RenderingVisitor renderingVisitor,
                String varname,
                ITemplateContext templateContext,
                List <ILiquidValue> iterable,
                TreeNode <IASTNode> liquidBlock)
            {
                String result = "";

                renderingVisitor.PushTextAccumulator(str => result += str);
                foreach (var item in iterable)
                {
                    templateContext.SymbolTableStack.Define(varname, item.ToOption());
                    renderingVisitor.StartWalking(liquidBlock);
                }
                renderingVisitor.PopTextAccumulator();
                return(LiquidString.Create(result));
            }
Exemplo n.º 5
0
        public StringValue Render(
            RenderingVisitor renderingVisitor,
            MacroBlockTag macroBlocktag,
            ITemplateContext templateContext, 
            IList<Option<IExpressionConstant>> args)
        {
            var macroScope = new SymbolTable();

            var i = 0;
            foreach (var varName in macroBlocktag.Args.Take(args.Count))
            {
                macroScope.DefineLocalVariable(varName, args[i].HasValue? args[i].Value : null);
                i++;
            }
            templateContext.SymbolTableStack.Push(macroScope);

            //String result = "";
            //var subRenderer = new RenderingVisitor(evaluator, templateContext, str => result += str);

            //evaluator.StartVisiting(subRenderer, macroBlocktag.LiquidBlock);
            String hiddenText = "";

            renderingVisitor.PushTextAccumulator(str => hiddenText += str);
            renderingVisitor.StartWalking(macroBlocktag.LiquidBlock);
            renderingVisitor.PopTextAccumulator();

            templateContext.SymbolTableStack.Pop();
            
//            foreach (var error in subRenderer.Errors)
//            {
//                errorAccumulator.Add(error);
//            }
            return new StringValue(hiddenText);



        }
 private StringValue IterateBlock(
     RenderingVisitor renderingVisitor,
     String varname,
     ITemplateContext templateContext,
     List<IExpressionConstant> iterable,
     TreeNode<IASTNode> liquidBlock)
 {
     String result = "";
     renderingVisitor.PushTextAccumulator(str => result += str);
     foreach (var item in iterable)
     {
         templateContext.SymbolTableStack.Define(varname, item);
         renderingVisitor.StartWalking(liquidBlock);
     }
     renderingVisitor.PopTextAccumulator();
     return new StringValue(result);
 }
 private static String EvalLiquidBlock(RenderingVisitor renderingVisitor, TreeNode<IASTNode> liquidBlock)
 {
     String result = "";
     Action<String> accumulator = str => result += str;
     renderingVisitor.PushTextAccumulator(accumulator);
     renderingVisitor.StartWalking(liquidBlock);
     renderingVisitor.PopTextAccumulator();
     return result;
 }