Пример #1
0
 /// <inheritdoc />
 public virtual void Render(TextWriter writer, TemplateContext context)
 {
     if (templateResult == null)
     {
         if (this.Context.Mode == EngineMode.Interpreted)
         {
             templateResult = context.InterpretTemplate(this.TemplateKey, this.reader);
         }
         else
         {
             templateResult = context.CompileTemplate(this.TemplateKey, this.reader);
         }
         if (templateResult == null)
         {
             throw new TemplateException($"template error.");
         }
     }
     try
     {
         templateResult.Render(writer, context);
     }
     catch (System.Exception e)
     {
         context.AddError(e);
     }
 }
Пример #2
0
        private string CompileParse(string name, TemplateContext ctx, IReader reader)
        {
            var result = ctx.CompileTemplate(name, reader);

            using (var write = new System.IO.StringWriter())
            {
                result.Render(write, ctx);
                return(write.ToString());
            }
        }
Пример #3
0
        /// <inheritdoc />
        public Task RenderAsync(TextWriter writer, TemplateContext context, CancellationToken cancellationToken = default)
        {
            cancellationToken.ThrowIfCancellationRequested();

            var t = context.CompileTemplate(this.TemplateKey, this.reader);

            if (t == null)
            {
                throw new TemplateException($"template error.");
            }
            try
            {
                return(t.RenderAsync(writer, context, cancellationToken));
            }
            catch (System.Exception e)
            {
                context.AddError(e);
                return(Task.FromException(e));
            }
        }