Пример #1
0
func (me Go) Emit(state config.State) error {
	pkg := g.Package{
		Name: "config",
	}
	for _, t := range state.Types {
		fields := make([]g.Field, len(t.Params))
		for i, param := range t.Params {
			fields[i] = g.Field{
				Name:     makeGoName(param.GoName, param.Name),
				TypeName: typeName(state.Types, param.Type),
				Tag:      fmt.Sprintf("`yaml:\"%s\"`", param.Name),
			}
		}
		pkg.Declare(g.Struct{
			Name:   makeGoName(t.GoName, t.Name),
			Fields: fields,
		})
	}
	return pkg.WriteTo(os.Stdout)
}