This commit is contained in:
		
							parent
							
								
									5166fc92b6
								
							
						
					
					
						commit
						5b66410031
					
				|  | @ -14,7 +14,8 @@ import config from './../../../../conf'; | |||
| 
 | ||||
| const parseParam = param => { | ||||
| 	const id = param.type.match(/^id\((.+?)\)/); | ||||
| 	const object = param.type.match(/^object\((.+?)\)/); | ||||
| 	const entity = param.type.match(/^entity\((.+?)\)/); | ||||
| 	const isObject = /^object/.test(param.type); | ||||
| 	const isArray = /\[\]$/.test(param.type); | ||||
| 	if (id) { | ||||
| 		param.kind = 'id'; | ||||
|  | @ -24,18 +25,40 @@ const parseParam = param => { | |||
| 			param.type += '[]'; | ||||
| 		} | ||||
| 	} | ||||
| 	if (object) { | ||||
| 		param.kind = 'object'; | ||||
| 	if (entity) { | ||||
| 		param.kind = 'entity'; | ||||
| 		param.type = 'object'; | ||||
| 		param.def = object[1]; | ||||
| 		param.entity = entity[1]; | ||||
| 		if (isArray) { | ||||
| 			param.type += '[]'; | ||||
| 		} | ||||
| 	} | ||||
| 	if (isObject) { | ||||
| 		param.kind = 'object'; | ||||
| 	} | ||||
| 
 | ||||
| 	return param; | ||||
| }; | ||||
| 
 | ||||
| const extractDefs = params => { | ||||
| 	const defs = []; | ||||
| 
 | ||||
| 	params.forEach(param => { | ||||
| 		if (param.def) { | ||||
| 			defs.push({ | ||||
| 				name: param.defName, | ||||
| 				params: param.def.map(p => parseParam(p)) | ||||
| 			}); | ||||
| 
 | ||||
| 			const childDefs = extractDefs(param.def); | ||||
| 
 | ||||
| 			defs.concat(childDefs); | ||||
| 		} | ||||
| 	}); | ||||
| 
 | ||||
| 	return defs; | ||||
| }; | ||||
| 
 | ||||
| gulp.task('doc:endpoints', () => { | ||||
| 	glob('./src/web/docs/api/endpoints/**/*.yaml', (globErr, files) => { | ||||
| 		if (globErr) { | ||||
|  | @ -50,11 +73,9 @@ gulp.task('doc:endpoints', () => { | |||
| 				url: `${config.api_url}/${ep.endpoint}`, | ||||
| 				desc: ep.desc, | ||||
| 				params: ep.params.map(p => parseParam(p)), | ||||
| 				paramDefs: Object.keys(ep.paramDefs).map(key => ({ | ||||
| 					name: key, | ||||
| 					params: ep.paramDefs[key].map(p => parseParam(p)) | ||||
| 				})), | ||||
| 				res: ep.res.map(p => parseParam(p)) | ||||
| 				paramDefs: extractDefs(ep.params), | ||||
| 				res: ep.res.map(p => parseParam(p)), | ||||
| 				resDefs: extractDefs(ep.res) | ||||
| 			}; | ||||
| 			pug.renderFile('./src/web/docs/api/endpoints/view.pug', vars, (renderErr, html) => { | ||||
| 				if (renderErr) { | ||||
|  |  | |||
|  | @ -7,7 +7,7 @@ desc: | |||
| params: | ||||
|   - name: "text" | ||||
|     type: "string" | ||||
|     optional: false | ||||
|     optional: true | ||||
|     desc: | ||||
|       ja: "投稿の本文" | ||||
|       en: "Text of a post" | ||||
|  | @ -30,20 +30,19 @@ params: | |||
|       ja: "引用する投稿" | ||||
|       en: "A post you want to quote" | ||||
|   - name: "poll" | ||||
|     type: "object(poll)" | ||||
|     type: "object" | ||||
|     optional: true | ||||
|     desc: | ||||
|       ja: "投票" | ||||
|       en: "A poll" | ||||
| 
 | ||||
| paramDefs: | ||||
|   poll: | ||||
|     - name: "choices" | ||||
|       type: "string[]" | ||||
|       optional: false | ||||
|       desc: | ||||
|         ja: "投票の選択肢" | ||||
|         en: "Choices of a poll" | ||||
|     defName: "poll" | ||||
|     def: | ||||
|       - name: "choices" | ||||
|         type: "string[]" | ||||
|         optional: false | ||||
|         desc: | ||||
|           ja: "投票の選択肢" | ||||
|           en: "Choices of a poll" | ||||
| 
 | ||||
| res: | ||||
|   - name: "created_post" | ||||
|  |  | |||
|  | @ -21,9 +21,13 @@ mixin table(params) | |||
| 							= ' ' | ||||
| 							a(href=`/docs/api/entities/${param.entity}`)= param.entity | ||||
| 							| ) | ||||
| 						else if param.kind == 'entity' | ||||
| 							| #{param.type} ( | ||||
| 							a(href=`/docs/api/entities/${param.entity}`)= param.entity | ||||
| 							| ) | ||||
| 						else if param.kind == 'object' | ||||
| 							| #{param.type} ( | ||||
| 							a(href=`#${param.def}`)= param.def | ||||
| 							a(href=`#${param.defName}`)= param.defName | ||||
| 							| ) | ||||
| 						else | ||||
| 							= param.type | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue