将go的结构定义转化为markdown 表格(帮助快速生产文档)

eleztian · · 1754 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

# Type2md - Golang Type To Markdown [github.com/eleztian/type2md](github.com/eleztian/type2md) 通过ast解析 将golang 的结构定义转化为markdown 表格。 支持将golang 的数据类型定义转化为markdown 表格 - 支持自定义 struct tag - 支持注释解析 - 支持默认值定义 - 支持是否必填 - 支持外部mod 类型引用解析。 - 表格类型支持跳转 ### Usage #### 安装 ```shell $ go install github.com/eleztian/type2md ``` #### 使用 ```shell $ type2md -h Usage of type2md: -f string file path -t string file title -tag string struct tag name (default "json") -v show version ``` ### Example ```go package test import "github.com/eleztian/type2md/test/ext" //go:generate type2md -f ../docs/doc_config.md github.com/eleztian/type2md/test Config // Config doc. type Config struct { Pre ext.Hook Post *ext.Hook Servers map[string]struct { Host string `json:"host,omitempty"` Port int `json:"port" enums:"22,65522" require:"false"` } `json:"servers"` // server list InlineStruct `json:",inline"` // inline struct Slice []string // sss MapData map[string]map[int]*OtherStruct ArrayData [][2]string `json:"array_data"` C []interface{} // slice interface{} } // InlineStruct inline struct. type InlineStruct struct { A string `json:"a"` // inline struct field a } // OtherStruct other struct // this is use for test. type OtherStruct struct { A string `json:"a" require:"true" default:"default value"` B [][2]ext.Mode `json:"b"` // array string C map[string]interface{} `json:"c"` // map[string]interface{} D *OtherStruct `json:"d"` // nested struct } ``` 执行下列命令 ```shell $ go generate ./... 2022/10/28 23:56:16 Current Module: github.com/eleztian/type2md 2022/10/28 23:56:16 start generate github.com/eleztian/type2md/test.Config 2022/10/28 23:56:16 start to save to ../docs/doc_config.md ``` 得到下面的文档: #### Config Doc Config doc. | Key | Type | Require | Default | Describe | |----------|----------|-----|------------------|--------------| |Pre|[Hook](#ext.Hook)|true| | | |Post|[Hook](#ext.Hook)|true| | | |servers.&#123;string&#125;.host|string|false| | | |servers.&#123;string&#125;.port|int|false| | - `22`<br>- `65522`| |a|string|true| |inline struct field a.| |Slice.&#91;&#93; |string|true| |sss.| |MapData.&#123;string&#125;.&#123;int&#125;.|[OtherStruct](#OtherStruct)|true| | | |array_data.&#91;&#93; .&#91;2&#93; |string|true| | | |C.&#91;&#93; |any|true| |slice interface&#123;&#125;.| ##### ext.Hook Hook hook config. | Key | Type | Require | Default | Describe | |----------|----------|-----|------------------|--------------| |name|string|false|example|hook name.| |commands.&#91;&#93; |string|true| |command list.| |envs.&#123;string&#125;|string|true| |env key map.| |mode|[Mode](#ext.Mode)|true|1|run mode.| ##### OtherStruct OtherStruct other struct this is use for test. | Key | Type | Require | Default | Describe | |----------|----------|-----|------------------|--------------| |a|string|true|default value| | |b.&#91;&#93; .&#91;2&#93; |[Mode](#ext.Mode)|true| |array string.| |c.&#123;string&#125;|any|true| |map&#91;string&#93; interface&#123;&#125;.| |d|[OtherStruct](#OtherStruct)|true| |nested struct.| ##### ext.Mode **Type:** int Mode mode define. | Enum Value | Describe | |----------|--------------| |1|mode q.| |2|mode a.| --- **github.com/eleztian/type2md/test.Config** GENERATED BY THE COMMAND [type2md](https://github.com/eleztian/type2md)

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1754 次点击  ∙  1 赞  
加入收藏 微博
1 回复  |  直到 2022-10-29 22:31:02
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传