1
This commit is contained in:
parent
39b00edbe1
commit
21ab09ca9f
@ -1,176 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import os
|
||||
import sys
|
||||
import json
|
||||
from urllib import parse as urlparse
|
||||
|
||||
class MyDoc(object):
|
||||
|
||||
def __init__(self, workDir):
|
||||
self._workDir = workDir + '/doc/'
|
||||
|
||||
def convert(self):
|
||||
self._env = json.loads(open(self._workDir + 'env.json', 'r').read())
|
||||
self._wf = open(self.getOutFileName(), 'w')
|
||||
self._wf.write('<?php\n\n')
|
||||
self._wf.write('class Doc\n{\n')
|
||||
if os.path.exists(self._workDir + 'README.php'):
|
||||
self._wf.write(open(self._workDir + 'env.json', 'r').read() + '\n')
|
||||
sys.path.append(self._workDir)
|
||||
for file in os.listdir(self._workDir):
|
||||
if file[0:1] == '_' or file[-3:] != '.py':
|
||||
continue
|
||||
m = __import__(file.replace('.py', ''))
|
||||
for name in dir(m):
|
||||
if name[0:1] != '_':
|
||||
t = getattr(m, name)
|
||||
if type(t).__name__ != 'type':
|
||||
continue
|
||||
c = t()
|
||||
self._convertClass(c)
|
||||
self._wf.write('\n}')
|
||||
self._wf.close()
|
||||
|
||||
def getOutFileName(self):
|
||||
return self._workDir + self._env['name'] + '.doc.php'
|
||||
|
||||
def _convertClass(self, c):
|
||||
def getParamType(param):
|
||||
if type(param[1]) in (int, float):
|
||||
return 'Number'
|
||||
if type(param[1]) in (str,):
|
||||
return 'String'
|
||||
return 'Number'
|
||||
def outParam(param):
|
||||
self._wf.write(' * @apiParam {%s} %s %s\n' % (getParamType(param), param[0], param[2]))
|
||||
def getJsonValue(val):
|
||||
if type(val) in (int, float):
|
||||
return val
|
||||
if type(val) in (str,):
|
||||
return '"%s"' % (val)
|
||||
return val
|
||||
def outRsp(item, ident):
|
||||
if isinstance(item[1], list):
|
||||
if item[0].find('!') != -1:
|
||||
self._wf.write(' * %s"%s": [ //%s\n' %
|
||||
(''.join([' ' for i in range(ident)]),
|
||||
item[0].replace('!', ''),
|
||||
item[2]))
|
||||
if len(item[1]) == 1:
|
||||
if type(item[1]) in (int, float, str):
|
||||
self._wf.write(' * %s%s\n' %
|
||||
(''.join([' ' for i in range(ident + 1)]),
|
||||
getJsonValue(item[1][0])))
|
||||
elif type(item[1][0]) in (list,):
|
||||
self._wf.write(' * %s{\n' %
|
||||
(''.join([' ' for i in range(ident + 1)]),
|
||||
))
|
||||
outRsp(item[1][0], ident + 2)
|
||||
self._wf.write(' * %s}\n' %
|
||||
(''.join([' ' for i in range(ident + 1)]),
|
||||
))
|
||||
else:
|
||||
if type(item[1][0]) in (int, float, str):
|
||||
self._wf.write(' * %s%s\n' %
|
||||
(''.join([' ' for i in range(ident + 1)]),
|
||||
getJsonValue(item[1][0])))
|
||||
else:
|
||||
self._wf.write(' * %s//struct %s\n' %
|
||||
((''.join([' ' for i in range(ident + 1)]),
|
||||
item[1][0].__class__.__name__
|
||||
)))
|
||||
self._wf.write(' * %s{\n' %
|
||||
(''.join([' ' for i in range(ident + 1)]),
|
||||
))
|
||||
[outRsp(p, ident + 2) for p in item[1][0].fields]
|
||||
self._wf.write(' * %s}\n' %
|
||||
(''.join([' ' for i in range(ident + 1)]),
|
||||
))
|
||||
else:
|
||||
self._wf.write(' * %s{\n' %
|
||||
(''.join([' ' for i in range(ident + 1)]),
|
||||
))
|
||||
for subitem in item[1]:
|
||||
outRsp(subitem, ident + 2)
|
||||
self._wf.write(' * %s}\n' %
|
||||
(''.join([' ' for i in range(ident + 1)]),
|
||||
))
|
||||
self._wf.write(' * %s],\n' % (''.join([' ' for i in range(ident)])))
|
||||
else:
|
||||
self._wf.write(' * %s"%s": { //struct %s,%s\n' %
|
||||
(''.join([' ' for i in range(ident)]),
|
||||
item[0],
|
||||
item[1].__name__,
|
||||
item[2],
|
||||
))
|
||||
for subitem in item[1]:
|
||||
outRsp(subitem, ident + 2)
|
||||
self._wf.write(' * %s}\n' % (''.join([' ' for i in range(ident)])))
|
||||
else:
|
||||
if type(item[1]) in (int, float, str):
|
||||
self._wf.write(' * %s"%s": %s, //%s\n' %
|
||||
(''.join([' ' for i in range(ident)]),
|
||||
item[0],
|
||||
getJsonValue(item[1]),
|
||||
item[2]))
|
||||
else:
|
||||
self._wf.write(' * %s"%s": { //struct %s, %s\n' %
|
||||
(''.join([' ' for i in range(ident)]),
|
||||
item[0],
|
||||
item[1].__class__.__name__,
|
||||
item[2]))
|
||||
[outRsp(p, ident + 1) for p in item[1].fields]
|
||||
self._wf.write(' * %s},\n' % (''.join([' ' for i in range(ident)])))
|
||||
|
||||
if not hasattr(c, 'apis'):
|
||||
return
|
||||
for item in c.apis:
|
||||
self._wf.write('\n /**\n')
|
||||
self._wf.write(' * @api {%s} %s %s\n' % (item.get('method', 'GET'), item['url'], item['name']))
|
||||
self._wf.write(' * @apiPermission %s\n' % (item.get('permission', 'none')))
|
||||
if 'group' in item:
|
||||
self._wf.write(' * @apiGroup %s\n' % (item.get('group', '')))
|
||||
self._wf.write(' * @apiVersion %s\n' % (item.get('version', '0.0.1')))
|
||||
self._wf.write(' * @apiDescription %s\n' % (item.get('desc', '')))
|
||||
for param in item['params']:
|
||||
if isinstance(param, list):
|
||||
outParam(param)
|
||||
else:
|
||||
[outParam(p) for p in param.params]
|
||||
self._wf.write(' * @apiSuccessExample {json} Success-Response:\n')
|
||||
self._wf.write(' * HTTP/1.1 200 OK\n')
|
||||
self._wf.write(' * {\n')
|
||||
for item in item['response']:
|
||||
if isinstance(item, list):
|
||||
outRsp(item, 1)
|
||||
else:
|
||||
[outRsp(p, 1) for p in item.fields]
|
||||
self._wf.write(' * }\n')
|
||||
self._wf.write(' */\n')
|
||||
|
||||
def generate(self):
|
||||
scheme = json.loads(open(self._workDir + 'apilist.json', 'r').read())
|
||||
if 'apis' not in scheme:
|
||||
return;
|
||||
for key, val in scheme['apis'].items():
|
||||
wf = open(self._workDir + key.replace('Controller', '') + '.py', 'w')
|
||||
wf.write('# -*- coding: utf-8 -*-\n\n')
|
||||
wf.write('import _common\n\n')
|
||||
wf.write('class %s(object):\n\n' % (key.replace('Controller', '')))
|
||||
wf.write(' def __init__(self):\n' % ())
|
||||
wf.write(' self.apis = [\n' % ())
|
||||
for api in val:
|
||||
wf.write(" {\n" % ())
|
||||
wf.write(" 'desc': '%s',\n" % (api))
|
||||
wf.write(" 'group': '%s',\n" % (key.replace('Controller', '')))
|
||||
wf.write(" 'url': 'webapp/index.php?c=%s&a=%s',\n" % (key.replace('Controller', ''), api))
|
||||
wf.write(" 'params': [\n" % ())
|
||||
wf.write(" _common.ReqHead(),\n" % ())
|
||||
wf.write(" ],\n" % ())
|
||||
wf.write(" 'response': [\n" % ())
|
||||
wf.write(" _common.RspHead(),\n" % ())
|
||||
wf.write(" ]\n" % ())
|
||||
wf.write(" },\n" % ())
|
||||
wf.write(' ]\n' % ())
|
||||
wf.close()
|
Loading…
x
Reference in New Issue
Block a user