code: func (v *evalVisitor) evalPartial(p *partial, node *ast.PartialStatement) string {
  	// get partial template
  	partialTpl, err := p.template()
  	if err != nil {
  		v.errPanic(err)
  	}
  
  	// push partial context
  	ctx := v.partialContext(node)
  	if ctx.IsValid() {
  		v.pushCtx(ctx)
  	}
  
  	// evaluate partial template
  	result, _ := partialTpl.program.Accept(v).(string)
  
  	// ident partial
  	result = indentLines(result, node.Indent)
  
  	if ctx.IsValid() {
  		v.popCtx()
  	}
  
  	return result
  }
docs: // evalPartial evaluates a partial