public String Render(ITemplateContext ctx)
        {
            var result = "";

            var renderingVisitor = new RenderingVisitor(ctx);
            renderingVisitor.StartWalking(_liquidAst.RootNode, str => result += str);

            if (renderingVisitor.HasErrors)
            {
                throw new LiquidRendererException(renderingVisitor.Errors);
            }

            return result;
        }
Example #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="onRenderingError">A handler for rendering errors (e.g divide by zero)</param>
        /// <param name="onParsingError">A handler for parsing errors (e.g. an include with a syntax error)</param>
        /// <returns></returns>
        public String Render(ITemplateContext ctx,
                             Action <LiquidError> onRenderingError = null,
                             Action <LiquidError> onParsingError   = null)
        {
            onRenderingError = onRenderingError ?? (err => { });
            onParsingError   = onParsingError ?? (err => { });

            var result = "";

            var renderingVisitor = new RenderingVisitor(ctx);

            renderingVisitor.RenderingErrorEventHandler += (sender, err) => onRenderingError(err);
            renderingVisitor.ParsingErrorEventHandler   += err => onParsingError(err);

            renderingVisitor.StartWalking(
                _liquidAst.RootNode,
                str => result += str);

            return(result);
        }