/apps/twnlua: add returns in docgen.py
This commit is contained in:
		| @@ -7,9 +7,11 @@ with open(sys.argv[1], 'r') if sys.argv[1] != "-" else sys.stdin as f: | ||||
|  | ||||
| api = json.loads(api_source) | ||||
|  | ||||
| def to_lua_type_annot(typename): | ||||
|     basetype = typename.rsplit(' *', 1)[0] | ||||
|     if typename == "char *": | ||||
| def to_lua_type_annot(typedesc): | ||||
|     if type(typedesc) is dict: | ||||
|         return r'{ %s }' % ','.join('%s: %s' % (f["name"], to_lua_type_annot(f["type"])) for f in typedesc["fields"]) | ||||
|     basetype = typedesc.rsplit(' *', 1)[0] | ||||
|     if typedesc == "char *": | ||||
|         return "string" | ||||
|     elif basetype == "float": | ||||
|         return "number" | ||||
| @@ -27,7 +29,7 @@ def to_lua_type_annot(typename): | ||||
|         return r"{ x: number, y: number, w: number, h: number }" | ||||
|     else: | ||||
|         return "unknown" | ||||
|         # raise BaseException("Unhandled type for annotation: %s" % typename) | ||||
|         # raise BaseException("Unhandled type for annotation: %s" % typedesc) | ||||
|  | ||||
| type_annotations, enum_annotations = {}, {} | ||||
| type_annotations["ctx"] = r"{ %s, udata: table }" % \ | ||||
| @@ -45,9 +47,14 @@ for annot in enum_annotations: | ||||
|  | ||||
| procedure_annotations = {} | ||||
| for procedure, procedure_desc in api["procedures"].items(): | ||||
|     procedure_annotations[procedure] = r"{ %s }" % \ | ||||
|     procedure_annotations[procedure] = {} | ||||
|     procedure_annotations[procedure]["params"] = r"{ %s }" % \ | ||||
|         ', '.join("%s: %s" % (p["name"], to_lua_type_annot(p["type"]) + '?' * ("default" in p)) for p in procedure_desc["params"]) | ||||
|     if "return" in procedure_desc: | ||||
|         procedure_annotations[procedure]["return"] = to_lua_type_annot(procedure_desc["return"]) | ||||
|  | ||||
| for annot in procedure_annotations: | ||||
|     print("---@param args " + procedure_annotations[annot]) | ||||
|     print("---@param args " + procedure_annotations[annot]["params"]) | ||||
|     if "return" in procedure_annotations[annot]: | ||||
|         print("---@return " + procedure_annotations[annot]["return"]) | ||||
|     print("function %s(args) end" % annot) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user