Generate documentation comments from service template.
This commit is contained in:
		@@ -184,11 +184,21 @@ type tmplArgs struct {
 | 
			
		||||
 | 
			
		||||
type imports struct {
 | 
			
		||||
	// Maps from a type name like "ui4" to the `alias.name` for the import.
 | 
			
		||||
	TypeRefByTypeName map[string]string
 | 
			
		||||
	TypeByName map[string]typeDesc
 | 
			
		||||
	// Each required import line, ordered by path.
 | 
			
		||||
	ImportLines []importItem
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type typeDesc struct {
 | 
			
		||||
	// How to refer to the type, e.g. `pkg.Name`.
 | 
			
		||||
	Ref string
 | 
			
		||||
	// How to refer to the type absolutely (but not valid Go), e.g.
 | 
			
		||||
	// `"github.com/foo/bar/pkg".Name`.
 | 
			
		||||
	AbsRef string
 | 
			
		||||
	// Name of the type without package, e.g. `Name`.
 | 
			
		||||
	Name string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type importItem struct {
 | 
			
		||||
	Alias string
 | 
			
		||||
	Path  string
 | 
			
		||||
@@ -240,24 +250,29 @@ func accumulateImports(srvDesc *srvdesc.SCPD, typeMap typedesc.TypeMap) (*import
 | 
			
		||||
		aliasByPath[path] = alias
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Populate typeRefByTypeName.
 | 
			
		||||
	typeRefByTypeName := make(map[string]string, len(typeNames))
 | 
			
		||||
	// Populate typeByName.
 | 
			
		||||
	typeByName := make(map[string]typeDesc, len(typeNames))
 | 
			
		||||
	for typeName := range typeNames {
 | 
			
		||||
		goType := typeMap[typeName]
 | 
			
		||||
		pkgPath := goType.GoType.PkgPath()
 | 
			
		||||
		alias := aliasByPath[pkgPath]
 | 
			
		||||
		td := typeDesc{
 | 
			
		||||
			Name: goType.GoType.Name(),
 | 
			
		||||
		}
 | 
			
		||||
		if alias == "" {
 | 
			
		||||
			// Builtin type.
 | 
			
		||||
			typeRefByTypeName[typeName] = goType.GoType.Name()
 | 
			
		||||
			td.AbsRef = td.Name
 | 
			
		||||
			td.Ref = td.Name
 | 
			
		||||
		} else {
 | 
			
		||||
			typeRefByTypeName[typeName] = fmt.Sprintf(
 | 
			
		||||
				"%s.%s", alias, goType.GoType.Name())
 | 
			
		||||
			td.AbsRef = strconv.Quote(pkgPath) + "." + td.Name
 | 
			
		||||
			td.Ref = alias + "." + td.Name
 | 
			
		||||
		}
 | 
			
		||||
		typeByName[typeName] = td
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return &imports{
 | 
			
		||||
		TypeRefByTypeName: typeRefByTypeName,
 | 
			
		||||
		ImportLines:       importLines,
 | 
			
		||||
		TypeByName:  typeByName,
 | 
			
		||||
		ImportLines: importLines,
 | 
			
		||||
	}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user