✌️
This commit is contained in:
		
							parent
							
								
									0711d29f6f
								
							
						
					
					
						commit
						da279f9e50
					
				
					 13 changed files with 104 additions and 32 deletions
				
			
		|  | @ -183,6 +183,24 @@ common: | ||||||
|     mk-uploader: |     mk-uploader: | ||||||
|       waiting: "Waiting" |       waiting: "Waiting" | ||||||
| 
 | 
 | ||||||
|  | docs: | ||||||
|  |   edit-this-page-on-github: "Caught a mistake or want to contribute to the documentation? " | ||||||
|  |   edit-this-page-on-github-link: "Edit this page on Github!" | ||||||
|  | 
 | ||||||
|  |   api: | ||||||
|  |     entities: | ||||||
|  |       properties: "Properties" | ||||||
|  |     endpoints: | ||||||
|  |       params: "Parameters" | ||||||
|  |       res: "Response" | ||||||
|  |     props: | ||||||
|  |       name: "Name" | ||||||
|  |       type: "Type" | ||||||
|  |       optional: "Optional" | ||||||
|  |       description: "Description" | ||||||
|  |       yes: "Yes" | ||||||
|  |       no: "No" | ||||||
|  | 
 | ||||||
| ch: | ch: | ||||||
|   tags: |   tags: | ||||||
|     mk-index: |     mk-index: | ||||||
|  |  | ||||||
|  | @ -10,12 +10,12 @@ const loadLang = lang => yaml.safeLoad( | ||||||
| 
 | 
 | ||||||
| const native = loadLang('ja'); | const native = loadLang('ja'); | ||||||
| 
 | 
 | ||||||
| const langs = Object.entries({ | const langs = { | ||||||
| 	'en': loadLang('en'), | 	'en': loadLang('en'), | ||||||
| 	'ja': native | 	'ja': native | ||||||
| }); | }; | ||||||
| 
 | 
 | ||||||
| langs.map(([, locale]) => { | Object.entries(langs).map(([, locale]) => { | ||||||
| 	// Extend native language (Japanese)
 | 	// Extend native language (Japanese)
 | ||||||
| 	locale = Object.assign({}, native, locale); | 	locale = Object.assign({}, native, locale); | ||||||
| }); | }); | ||||||
|  | @ -183,6 +183,24 @@ common: | ||||||
|     mk-uploader: |     mk-uploader: | ||||||
|       waiting: "待機中" |       waiting: "待機中" | ||||||
| 
 | 
 | ||||||
|  | docs: | ||||||
|  |   edit-this-page-on-github: "間違いや改善点を見つけましたか?" | ||||||
|  |   edit-this-page-on-github-link: "このページをGitHubで編集" | ||||||
|  | 
 | ||||||
|  |   api: | ||||||
|  |     entities: | ||||||
|  |       properties: "プロパティ" | ||||||
|  |     endpoints: | ||||||
|  |       params: "パラメータ" | ||||||
|  |       res: "レスポンス" | ||||||
|  |     props: | ||||||
|  |       name: "名前" | ||||||
|  |       type: "型" | ||||||
|  |       optional: "オプション" | ||||||
|  |       description: "説明" | ||||||
|  |       yes: "はい" | ||||||
|  |       no: "いいえ" | ||||||
|  | 
 | ||||||
| ch: | ch: | ||||||
|   tags: |   tags: | ||||||
|     mk-index: |     mk-index: | ||||||
|  |  | ||||||
|  | @ -1,8 +1,21 @@ | ||||||
| @import "../style" | @import "../style" | ||||||
| 
 | 
 | ||||||
| #url | #url | ||||||
| 	padding 8px 12px | 	padding 8px 12px 8px 8px | ||||||
| 	font-family Consolas, 'Courier New', Courier, Monaco, monospace | 	font-family Consolas, 'Courier New', Courier, Monaco, monospace | ||||||
| 	color #fff | 	color #fff | ||||||
| 	background #222e40 | 	background #222e40 | ||||||
| 	border-radius 4px | 	border-radius 4px | ||||||
|  | 
 | ||||||
|  | 	> .method | ||||||
|  | 		display inline-block | ||||||
|  | 		margin 0 8px 0 0 | ||||||
|  | 		padding 0 6px | ||||||
|  | 		color #f4fcff | ||||||
|  | 		background #17afc7 | ||||||
|  | 		border-radius 4px | ||||||
|  | 		user-select none | ||||||
|  | 		pointer-events none | ||||||
|  | 
 | ||||||
|  | 	> .host | ||||||
|  | 		opacity 0.7 | ||||||
|  |  | ||||||
|  | @ -7,12 +7,17 @@ block meta | ||||||
| block main | block main | ||||||
| 	h1= endpoint | 	h1= endpoint | ||||||
| 
 | 
 | ||||||
| 	p#url= url | 	p#url | ||||||
|  | 		span.method POST | ||||||
|  | 		span.host | ||||||
|  | 			= url.host | ||||||
|  | 			| / | ||||||
|  | 		span.path= url.path | ||||||
| 
 | 
 | ||||||
| 	p#desc= desc[lang] || desc['ja'] | 	p#desc= desc[lang] || desc['ja'] | ||||||
| 
 | 
 | ||||||
| 	section | 	section | ||||||
| 		h2 Params | 		h2= common.i18n[lang]['docs']['api']['endpoints']['params'] | ||||||
| 		+propTable(params) | 		+propTable(params) | ||||||
| 
 | 
 | ||||||
| 		if paramDefs | 		if paramDefs | ||||||
|  | @ -23,5 +28,5 @@ block main | ||||||
| 
 | 
 | ||||||
| 	if res | 	if res | ||||||
| 		section | 		section | ||||||
| 			h2 Response | 			h2= common.i18n[lang]['docs']['api']['endpoints']['res'] | ||||||
| 			+propTable(res) | 			+propTable(res) | ||||||
|  |  | ||||||
|  | @ -10,7 +10,7 @@ block main | ||||||
| 	p#desc= desc[lang] || desc['ja'] | 	p#desc= desc[lang] || desc['ja'] | ||||||
| 
 | 
 | ||||||
| 	section | 	section | ||||||
| 		h2 Properties | 		h2= common.i18n[lang]['docs']['api']['entities']['properties'] | ||||||
| 		+propTable(props) | 		+propTable(props) | ||||||
| 
 | 
 | ||||||
| 		if propDefs | 		if propDefs | ||||||
|  |  | ||||||
|  | @ -16,7 +16,7 @@ import generateVars from '../vars'; | ||||||
| 
 | 
 | ||||||
| const commonVars = generateVars(); | const commonVars = generateVars(); | ||||||
| 
 | 
 | ||||||
| const langs = ['ja', 'en']; | const langs = Object.keys(commonVars.i18n); | ||||||
| 
 | 
 | ||||||
| const kebab = string => string.replace(/([a-z])([A-Z])/g, '$1-$2').replace(/\s+/g, '-').toLowerCase(); | const kebab = string => string.replace(/([a-z])([A-Z])/g, '$1-$2').replace(/\s+/g, '-').toLowerCase(); | ||||||
| 
 | 
 | ||||||
|  | @ -102,7 +102,10 @@ gulp.task('doc:api:endpoints', () => { | ||||||
| 			const ep = yaml.safeLoad(fs.readFileSync(file, 'utf-8')); | 			const ep = yaml.safeLoad(fs.readFileSync(file, 'utf-8')); | ||||||
| 			const vars = { | 			const vars = { | ||||||
| 				endpoint: ep.endpoint, | 				endpoint: ep.endpoint, | ||||||
| 				url: `${config.api_url}/${ep.endpoint}`, | 				url: { | ||||||
|  | 					host: config.api_url, | ||||||
|  | 					path: ep.endpoint | ||||||
|  | 				}, | ||||||
| 				desc: ep.desc, | 				desc: ep.desc, | ||||||
| 				params: sortParams(ep.params.map(p => parseParam(p))), | 				params: sortParams(ep.params.map(p => parseParam(p))), | ||||||
| 				paramDefs: extractDefs(ep.params), | 				paramDefs: extractDefs(ep.params), | ||||||
|  | @ -113,6 +116,7 @@ gulp.task('doc:api:endpoints', () => { | ||||||
| 				pug.renderFile('./src/web/docs/api/endpoints/view.pug', Object.assign({}, vars, { | 				pug.renderFile('./src/web/docs/api/endpoints/view.pug', Object.assign({}, vars, { | ||||||
| 					lang, | 					lang, | ||||||
| 					title: ep.endpoint, | 					title: ep.endpoint, | ||||||
|  | 					src: `https://github.com/syuilo/misskey/tree/master/src/web/docs/api/endpoints/${ep.endpoint}.yaml`, | ||||||
| 					kebab, | 					kebab, | ||||||
| 					common: commonVars | 					common: commonVars | ||||||
| 				}), (renderErr, html) => { | 				}), (renderErr, html) => { | ||||||
|  | @ -152,6 +156,7 @@ gulp.task('doc:api:entities', () => { | ||||||
| 				pug.renderFile('./src/web/docs/api/entities/view.pug', Object.assign({}, vars, { | 				pug.renderFile('./src/web/docs/api/entities/view.pug', Object.assign({}, vars, { | ||||||
| 					lang, | 					lang, | ||||||
| 					title: entity.name, | 					title: entity.name, | ||||||
|  | 					src: `https://github.com/syuilo/misskey/tree/master/src/web/docs/api/entities/${kebab(entity.name)}.yaml`, | ||||||
| 					kebab, | 					kebab, | ||||||
| 					common: commonVars | 					common: commonVars | ||||||
| 				}), (renderErr, html) => { | 				}), (renderErr, html) => { | ||||||
|  |  | ||||||
|  | @ -1,10 +1,10 @@ | ||||||
| mixin propTable(props) | mixin propTable(props) | ||||||
| 	table.props | 	table.props | ||||||
| 		thead: tr | 		thead: tr | ||||||
| 			th Name | 			th= common.i18n[lang]['docs']['api']['props']['name'] | ||||||
| 			th Type | 			th= common.i18n[lang]['docs']['api']['props']['type'] | ||||||
| 			th Optional | 			th= common.i18n[lang]['docs']['api']['props']['optional'] | ||||||
| 			th Description | 			th= common.i18n[lang]['docs']['api']['props']['description'] | ||||||
| 		tbody | 		tbody | ||||||
| 			each prop in props | 			each prop in props | ||||||
| 				tr | 				tr | ||||||
|  | @ -29,5 +29,9 @@ mixin propTable(props) | ||||||
| 								| ) | 								| ) | ||||||
| 						else if prop.kind == 'date' | 						else if prop.kind == 'date' | ||||||
| 							|  (Date) | 							|  (Date) | ||||||
| 					td.optional= prop.optional.toString() | 					td.optional | ||||||
|  | 						if prop.optional | ||||||
|  | 							= common.i18n[lang]['docs']['api']['props']['yes'] | ||||||
|  | 						else | ||||||
|  | 							= common.i18n[lang]['docs']['api']['props']['no'] | ||||||
| 					td.desc!= prop.desc[lang] || prop.desc['ja'] | 					td.desc!= prop.desc[lang] || prop.desc['ja'] | ||||||
|  |  | ||||||
|  | @ -37,7 +37,8 @@ gulp.task('doc:docs', () => { | ||||||
| 			const vars = { | 			const vars = { | ||||||
| 				common: commonVars, | 				common: commonVars, | ||||||
| 				lang: lang, | 				lang: lang, | ||||||
| 				title: fs.readFileSync(file, 'utf-8').match(/^h1 (.+?)\r?\n/)[1] | 				title: fs.readFileSync(file, 'utf-8').match(/^h1 (.+?)\r?\n/)[1], | ||||||
|  | 				src: `https://github.com/syuilo/misskey/tree/master/src/web/docs/${name}.${lang}.pug`, | ||||||
| 			}; | 			}; | ||||||
| 			pug.renderFile(file, vars, (renderErr, content) => { | 			pug.renderFile(file, vars, (renderErr, content) => { | ||||||
| 				if (renderErr) { | 				if (renderErr) { | ||||||
|  |  | ||||||
|  | @ -27,6 +27,12 @@ html(lang= lang) | ||||||
| 							each endpoint in common.endpoints | 							each endpoint in common.endpoints | ||||||
| 								li: a(href=`./api/endpoints/${common.kebab(endpoint)}`)= endpoint | 								li: a(href=`./api/endpoints/${common.kebab(endpoint)}`)= endpoint | ||||||
| 		main | 		main | ||||||
| 			block main | 			article | ||||||
| 			if content | 				block main | ||||||
| 				| !{content} | 				if content | ||||||
|  | 					| !{content} | ||||||
|  | 
 | ||||||
|  | 			footer | ||||||
|  | 				p | ||||||
|  | 					= common.i18n[lang]['docs']['edit-this-page-on-github'] | ||||||
|  | 					a(href=src target="_blank")= common.i18n[lang]['docs']['edit-this-page-on-github-link'] | ||||||
|  |  | ||||||
|  | @ -37,6 +37,14 @@ main | ||||||
| 		margin 1em 0 | 		margin 1em 0 | ||||||
| 		line-height 1.6em | 		line-height 1.6em | ||||||
| 
 | 
 | ||||||
|  | 	footer | ||||||
|  | 		margin 32px 0 0 0 | ||||||
|  | 		border-top solid 2px #eee | ||||||
|  | 
 | ||||||
|  | 		.copyright | ||||||
|  | 			margin 16px 0 0 0 | ||||||
|  | 			color #aaa | ||||||
|  | 
 | ||||||
| nav | nav | ||||||
| 	display block | 	display block | ||||||
| 	position fixed | 	position fixed | ||||||
|  | @ -48,15 +56,6 @@ nav | ||||||
| 	padding 32px | 	padding 32px | ||||||
| 	border-right solid 2px #eee | 	border-right solid 2px #eee | ||||||
| 
 | 
 | ||||||
| footer |  | ||||||
| 	padding:32px 0 0 0 |  | ||||||
| 	margin 32px 0 0 0 |  | ||||||
| 	border-top solid 1px #eee |  | ||||||
| 
 |  | ||||||
| 	.copyright |  | ||||||
| 		margin 16px 0 0 0 |  | ||||||
| 		color #aaa |  | ||||||
| 
 |  | ||||||
| table | table | ||||||
| 	width 100% | 	width 100% | ||||||
| 	border-spacing 0 | 	border-spacing 0 | ||||||
|  |  | ||||||
|  | @ -1,10 +1,11 @@ | ||||||
| import * as fs from 'fs'; | import * as fs from 'fs'; | ||||||
| import * as glob from 'glob'; | import * as glob from 'glob'; | ||||||
| import * as yaml from 'js-yaml'; | import * as yaml from 'js-yaml'; | ||||||
|  | import langs from '../../../locales'; | ||||||
| import config from '../../conf'; | import config from '../../conf'; | ||||||
| 
 | 
 | ||||||
| export default function() { | export default function(): { [key: string]: any } { | ||||||
| 	const vars = {}; | 	const vars = {} as { [key: string]: any }; | ||||||
| 
 | 
 | ||||||
| 	const endpoints = glob.sync('./src/web/docs/api/endpoints/**/*.yaml'); | 	const endpoints = glob.sync('./src/web/docs/api/endpoints/**/*.yaml'); | ||||||
| 	vars['endpoints'] = endpoints.map(ep => { | 	vars['endpoints'] = endpoints.map(ep => { | ||||||
|  | @ -35,5 +36,7 @@ export default function() { | ||||||
| 
 | 
 | ||||||
| 	vars['config'] = config; | 	vars['config'] = config; | ||||||
| 
 | 
 | ||||||
|  | 	vars['i18n'] = langs; | ||||||
|  | 
 | ||||||
| 	return vars; | 	return vars; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -5,10 +5,10 @@ | ||||||
| import module_ from './module'; | import module_ from './module'; | ||||||
| import plugins from './plugins'; | import plugins from './plugins'; | ||||||
| 
 | 
 | ||||||
| import langs from './langs'; | import langs from '../locales'; | ||||||
| import version from '../src/version'; | import version from '../src/version'; | ||||||
| 
 | 
 | ||||||
| module.exports = langs.map(([lang, locale]) => { | module.exports = Object.entries(langs).map(([lang, locale]) => { | ||||||
| 	// Chunk name
 | 	// Chunk name
 | ||||||
| 	const name = lang; | 	const name = lang; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue