-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinterface_document_file.c
More file actions
189 lines (168 loc) · 5.34 KB
/
interface_document_file.c
File metadata and controls
189 lines (168 loc) · 5.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
//Created by 葛振东 on 2020/02/23
//Copyright 2020 葛振东. All rights reserved.
#define _CRT_SECURE_NO_WARNINGS
#include "interface_document_file.h"
//各个级别的标题
#define FIRST_TITLE "# "
#define SECOND_TITLE "## "
#define TIRED_TITLE "### "
#define FOURTH_TITLE "#### "
#define FIFTH_TITLE "##### "
#define SIXTH_TITLE "###### "
//标准表格标题
#define GENERAL_TITLE "|参数名|参数类型|参数描述|\n|-------|--------|----------|\n"
//通用体
#define GENERAL_BODY "|code|int|状态码|\n|message|string|描述|\n|data|object|返回的数据|\n"
#define SEPARATOR "|"
#define B "**"
//宽换行数
#define WITH_BR 4
//窄换行数
#define NARROW_BR 3
static FILE* out_put_file = NULL;
String* cache = NULL;
//创建接口文档的标题
void create_interface_document_title(char* interface_document_title);
//创建接口文档的头
void create_interface_document_head(InterfaceHead* interface_head, int num);
//创建接口文档的体
void create_interface_document_body(InterfaceBody* interface_body);
//创建请求接口体
void create_interface_document_general_body(Object* request_object);
//创建对象参数
void create_interface_document_general_param(ObjectParam* object_param);
//创建后端字符串(后端(针对系统级参数里面的data))
void create_interface_doucment_after_end_str();
//接口结束,留下换行,清空缓存
void create_interface_doucment_line_feed();
void output_to_file(InterfaceDocument* interface_document, char* output_file_path, char* interface_document_title)
{
check_null(interface_document);
//打开文件
out_put_file = fopen(output_file_path, "a");
//创建缓冲区
cache = new_string();
create_interface_document_title(interface_document_title);
//循环放入解析内容
for (int i = 0, size = interface_document->interface_size; i < size; i++)
{
InterfaceHead* interface_head = interface_document->interface_heads[i];
InterfaceBody* interface_body = interface_document->interface_bodys[i];
//创建接口文档头
create_interface_document_head(interface_head, i);
//创建接口文档体
create_interface_document_body(interface_body);
}
delete_string(cache);
fclose(out_put_file);
cache = NULL;
out_put_file = NULL;
}
void create_interface_document_title(char* interface_document_title)
{
char** buffer = &cache->buffer;
strcat(*buffer, FIRST_TITLE);
strcat(*buffer, interface_document_title);
put_multi_row(*buffer, WITH_BR);
strcat(*buffer, B);
strcat(*buffer, "系统级参数");
strcat(*buffer, B);
put_multi_row(*buffer, WITH_BR);
strcat(*buffer, GENERAL_TITLE);
strcat(*buffer, GENERAL_BODY);
put_multi_row(*buffer, WITH_BR);
//输出到文件
fputs(*buffer, out_put_file);
fflush(out_put_file);
}
void create_interface_document_head(InterfaceHead* interface_head, int num)
{
string_clear(cache);
char** buffer = &cache->buffer;
sprintf(*buffer, "%s%d%s", TIRED_TITLE, ++num, "、");
strcat(*buffer, interface_head->request_name);
put_multi_row(*buffer, NARROW_BR);
strcat(*buffer, B);
strcat(*buffer, "前端");
strcat(*buffer, B);
put_multi_row(*buffer, NARROW_BR);
strcat(*buffer, "请求方式:");
strcat(*buffer, interface_head->request_way);
put_multi_row(*buffer, NARROW_BR);
strcat(*buffer, "请求路径:");
strcat(*buffer, interface_head->request_url);
put_multi_row(*buffer, NARROW_BR);
strcat(*buffer, "请求类型:");
strcat(*buffer, interface_head->request_type);
put_multi_row(*buffer, NARROW_BR);
//输出到文件
fputs(*buffer, out_put_file);
fflush(out_put_file);
}
void create_interface_document_body(InterfaceBody* interface_body)
{
//创建请求接口体
for (int i = 0, size = interface_body->request_object_size; i < size; i++)
{
Object* request_object = interface_body->request_objects[i];
create_interface_document_general_body(request_object);
fputs(cache->buffer, out_put_file);
}
//创建后端提示语 eg: 后端(针对系统级参数里面的data)
create_interface_doucment_after_end_str();
//创建响应接口体
for (int i = 0, size = interface_body->response_object_size; i < size; i++)
{
Object* response_object = interface_body->response_objects[i];
create_interface_document_general_body(response_object);
fputs(cache->buffer, out_put_file);
}
//接口结束,留下换行,清空缓存
create_interface_doucment_line_feed();
}
void create_interface_document_general_body(Object* object)
{
string_clear(cache);
char** buffer = &cache->buffer;
strcat(*buffer, object->object_name);
strcat(*buffer, ":");
put_multi_row(*buffer, 3);
strcat(*buffer, GENERAL_TITLE);
for (int i = 0, size = object->object_param_size; i < size; i++)
{
ObjectParam* object_param = object->object_params[i];
create_interface_document_general_param(object_param);
}
}
void create_interface_document_general_param(ObjectParam* object_param)
{
char** buffer = &cache->buffer;
strcat(*buffer, SEPARATOR);
strcat(*buffer, object_param->param_name);
strcat(*buffer, SEPARATOR);
strcat(*buffer, object_param->param_type);
strcat(*buffer, SEPARATOR);
strcat(*buffer, object_param->param_annotation);
strcat(*buffer, SEPARATOR);
strcat(*buffer, "\n");
}
void create_interface_doucment_after_end_str()
{
string_clear(cache);
char** buffer = &cache->buffer;
put_multi_row(*buffer, 4);
strcat(*buffer, B);
strcat(*buffer, "后端");
strcat(*buffer, B);
strcat(*buffer, "(针对系统级参数里面的data)");
put_multi_row(*buffer, 4);
fputs(*buffer,out_put_file);
fflush(out_put_file);
}
void create_interface_doucment_line_feed()
{
string_clear(cache);
put_multi_row(cache->buffer, 4);
fputs(cache->buffer, out_put_file);
fflush(out_put_file);
}