代码拉取完成,页面将自动刷新
package model
import (
"encoding/json"
"fmt"
"io"
"text/template"
"time"
)
type DsdxDocument struct {
// 文档名称
Name string `json:"name" xml:"name"`
// 创作者
Creator string `json:"creator" xml:"creator"`
// dsdx版本 DSDX-1.0
DSDXVersion string `json:"dsdx_version" xml:"dsdx_version"`
// 文档创建时间 yyyy-MM-dd HH:mm:ss
CreateTime string `json:"create_time" xml:"create_time"`
// dsdx文档标识 自动生成 DSDX-${Name}-${Version}-${CreateTime}
DSDXID string `json:"dsdx_id" xml:"dsdx_id"`
// 项目名称
ProjectName string `json:"project_name" xml:"project_name"`
// 组件列表
Components []DsdxComponent `json:"components" xml:"components"`
// 依赖关系
Dependencies DsdxDependencies `json:"dependencies" xml:"-"`
}
type DsdxComponent struct {
// DSDX-xxx
ID string `json:"id" xml:"id"`
Group string `json:"group,omitempty" xml:"group,omitempty"`
Name string `json:"name" xml:"name"`
Version string `json:"version" xml:"version"`
Language string `json:"language,omitempty" xml:"language,omitempty"`
License []string `json:"license,omitempty" xml:"license,omitempty"`
}
type DsdxDependencies map[string][]string
func NewDsdxDocument(name, creator string) *DsdxDocument {
version := "DSDX-1.0"
create := time.Now().Format("2006-01-02 15:04:05")
id := fmt.Sprintf("DSDX-%s-%s-%s", name, version, create)
return &DsdxDocument{
Name: name,
Creator: creator,
ProjectName: name,
CreateTime: create,
DSDXVersion: version,
DSDXID: id,
}
}
func (doc *DsdxDocument) AppendComponents(id, group, name, version, language string, license []string) {
if id == "" {
id = fmt.Sprintf("DSDX-%s-%s-%s", group, name, version)
}
doc.Components = append(doc.Components, DsdxComponent{
ID: id,
Group: group,
Name: name,
Version: version,
Language: language,
License: license,
})
}
func (doc *DsdxDocument) AppendDependencies(parentId string, childrenIds []string) {
if doc.Dependencies == nil {
doc.Dependencies = DsdxDependencies{}
}
if len(childrenIds) > 0 {
doc.Dependencies[parentId] = childrenIds
}
}
func (doc *DsdxDocument) WriteDsdx(w io.Writer) error {
tmpl, err := template.New("tagValue").Funcs(template.FuncMap{
"tojson": func(o any) string {
data, _ := json.Marshal(o)
return string(data)
},
}).Parse(dsdxtpl)
if err != nil {
return err
}
return tmpl.Execute(w, doc)
}
const dsdxtpl = `Name: {{ .Name }}
DSDXVersion: {{ .DSDXVersion }}
DSDXID: {{ .DSDXID }}
Creator: {{ .Creator }}
CreateTime: {{ .CreateTime }}
ProjectName: {{ .ProjectName }}
{{ range .Components }}
ComponentName: {{ .Name }}
ComponentGroup: {{ .Group }}
ComponentVersion: {{ .Version }}
ComponentID: {{ .ID }}
ComponentLanguage: {{ .Language }}
ComponentLicense: {{ .License|tojson }}
{{ end }}
Dependencies: {{ .Dependencies|tojson }}
`
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。