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); }
private string CaptureHiddenText(TreeNode <IASTNode> liquidBlock) { String hiddenText = ""; _renderingVisitor.PushTextAccumulator(str => hiddenText += str); _renderingVisitor.StartWalking(liquidBlock); _renderingVisitor.PopTextAccumulator(); return(hiddenText); }
public void It_Should_Render_A_Raw_Text_Node() { // Arrange String result = ""; const string blocktext = "HELLO"; var renderingVisitor = new RenderingVisitor(new TemplateContext()); renderingVisitor.PushTextAccumulator(str => result += str); var rawTextNode = new RawBlockTag(blocktext); // Act renderingVisitor.Visit(rawTextNode); // Assert Assert.That(result, Is.EqualTo(blocktext)); }
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)); }
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; }