#!/usr/bin/python # -*- coding: UTF-8 -*- import sys import os import io import re import json import shutil source_path = r"../luat" if len(sys.argv) >= 3: source_path = sys.argv[1] print("path:") print(source_path) file_list = [] for home, dirs, files in os.walk(source_path): for filename in files: if filename.endswith(".c"): file_list.append(os.path.join(home, filename)) for home, dirs, files in os.walk(source_path+"/../lua"): for filename in files: if filename.endswith(".c"): file_list.append(os.path.join(home, filename)) for home, dirs, files in os.walk(source_path+"/../components"): for filename in files: if filename.endswith(".c"): file_list.append(os.path.join(home, filename)) for home, dirs, files in os.walk(source_path+"/../bsp/rtt"): for filename in files: if filename.endswith(".c"): file_list.append(os.path.join(home, filename)) #注释的格式: # /* # @sys_pub mod # 第一行写明消息的用途,如:WIFI扫描结束 # WLAN_SCAN_DONE (该topic的完整名称) # @string 第一个传递的数据,@后跟数据类型,空格后跟数据解释,如果没有就别写这几行 # @number 第二个数据 # ...根据实际,列出所有传递的数据 # @usage # --使用的例子,可多行 # sys.taskInit(function() # xxxxxxxxxx # xxxxxxx # sys.waitUntil("WLAN_SCAN_DONE") # xxxxxxxxxx # end) # */ modules = [] #数据结构: # modules = { # 'mod': [ # { # 'topic':'WLAN_SCAN_DONE', # 'summary': 'WIFI扫描结束', # 'return': [ # { # 'type': 'string', # 'summary': '第一个传递的数据' # }, # { # 'type': 'number', # 'summary': '第二个数据' # } # ], # 'usage': 'sys.taskInit(function()...' # }, # ... # ], # ... # } print("found %d files" % len(file_list)) modules = {} for file in file_list: text = "" try: f = io.open(file,"r",encoding="utf-8") text = f.read() f.close() except: #print("read %s fail, maybe not use utf8" % file) continue #后面的数据 lines = text.splitlines() line_now = 0 while line_now 0: doc.write("|返回参数类型|解释|\n|-|-|\n") for arg in pub["return"]: doc.write("|"+arg["type"].replace("|","\|")+"|"+arg["summary"].replace("|","\|")+"|\n") doc.write("\n") else: doc.write("无\n\n") doc.write("**例子**\n\n") if len(pub["usage"]) == 0: doc.write("无\n\n") else: doc.write("```lua\n"+pub["usage"]+"\n```\n\n") doc.write("---\n\n") doc.close()