前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >将go的结构定义转化为markdown 表格(帮助快速生产文档)

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

原创
作者头像
用户8345951
发布2022-10-29 00:13:22
6670
发布2022-10-29 00:13:22
举报
文章被收录于专栏:golang工具golang工具

Type2md - Golang Type To Markdown

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

true

Post

true

servers.{string}.host

string

false

servers.{string}.port

int

false

  • 22 - 65522

a

string

true

inline struct field a.

Slice.[]

string

true

sss.

MapData.{string}.{int}.

true

array_data.[] .[2]

string

true

C.[]

any

true

slice interface{}.

ext.Hook

Hook hook config.

Key

Type

Require

Default

Describe

name

string

false

example

hook name.

commands.[]

string

true

command list.

envs.{string}

string

true

env key map.

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.[] .[2]

true

array string.

c.{string}

any

true

map[string] interface{}.

d

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Type2md - Golang Type To Markdown
    • Usage
      • Example
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档