From 1afdd936dae083360b950e10f6edb5e548c35cd9 Mon Sep 17 00:00:00 2001 From: Quentin Perez Date: Wed, 14 Dec 2016 11:06:24 +0100 Subject: [PATCH] :hammer: rework genAst --- encoder.go | 47 ++++++++++++++++------------------------------- 1 file changed, 16 insertions(+), 31 deletions(-) diff --git a/encoder.go b/encoder.go index cf66ffa..bbcd476 100644 --- a/encoder.go +++ b/encoder.go @@ -94,57 +94,42 @@ func (e *GenericTemplateBasedEncoder) genAst(templateFilename string) (*Ast, err GoPWD: goPwd, File: e.file, RawFilename: templateFilename, - // Filename: "", - Service: e.service, + Filename: "", + Service: e.service, } + buffer := new(bytes.Buffer) + tmpl, err := template.New("").Funcs(funcmap.FuncMap).Parse(templateFilename) + if err != nil { + return nil, err + } + if err := tmpl.Execute(buffer, ast); err != nil { + return nil, err + } + ast.Filename = buffer.String() return &ast, nil } -func (e *GenericTemplateBasedEncoder) buildContent(templateFilename string) (string, error) { +func (e *GenericTemplateBasedEncoder) buildContent(templateFilename string) (string, string, error) { // initialize template engine fullPath := filepath.Join(e.templateDir, templateFilename) templateName := filepath.Base(fullPath) tmpl, err := template.New(templateName).Funcs(funcmap.FuncMap).ParseFiles(fullPath) if err != nil { - return "", err + return "", "", err } ast, err := e.genAst(templateFilename) if err != nil { - return "", err - } - - // translate the filename - ast.Filename, err = e.translateString(templateFilename, templateFilename) - if err != nil { - return "", err + return "", "", err } // generate the content buffer := new(bytes.Buffer) if err := tmpl.Execute(buffer, ast); err != nil { - return "", err + return "", "", err } - return buffer.String(), nil -} - -func (e *GenericTemplateBasedEncoder) translateString(input string, templateFilename string) (string, error) { - buffer := new(bytes.Buffer) - tmpl, err := template.New("").Funcs(funcmap.FuncMap).Parse(input) - if err != nil { - return "", err - } - - ast, err := e.genAst(templateFilename) - if err != nil { - return "", err - } - - if err := tmpl.Execute(buffer, ast); err != nil { - return "", err - } - return buffer.String(), nil + return buffer.String(), ast.Filename, nil } func (e *GenericTemplateBasedEncoder) Files() []*plugin_go.CodeGeneratorResponse_File {