Slide 18
Slide 18 text
今後入る予定の機能
■ コード生成ライブラリ
● 簡単にGraphQL用コード生成器が作れる(PR#7)
var flagOutput string
var Generator = &codegen.Generator{ Name: "fragment", Doc: "example of codegen", Run: run }
func init() { Generator.Flags.StringVar(&flagOutput, "output", "fragment.kt", "output file") }
func run(pass *codegen.Pass) (rerr error) {
output, path := pass.CreateTemp("fragment.kt")
for _, q := range pass.Queries {
if len(q.Fragments) == 0 { continue }
tmpl := codegen.NewTemplate(pass, "fragment-template")
_, err := tmpl.Funcs(funcMap(pass, tmpl)).Parse(tmplStr)
if err != nil { return err }
if err := tmpl.ExecuteTemplate(output, "fragments", q.Fragments); err != nil { return err }
}
if err := exec.Command("ktfmt", path).Run(); err != nil { return err }
if _, err := output.Seek(0, io.SeekStart); err != nil { return err }
if _, err := io.Copy(pass.Output, output); err != nil { return err }
return nil
}