from app.engine.loaders.projectJson import * class MarkDown: def __init__(self,table:JsonTable,path:str) -> None: self._table = table self._path = path def build(self): flds:Dict[str,Field] = self._table.fields() records:List[Record] = self._table.records() columns:list = [] colComments:list = [] ignores:List[str] = [] for name,fld in flds.items(): if name =='_id' or name =='nodeType' or name =='relTbId': ignores.append(name) continue columns.append(fld.value('name')) colComments.append(fld.value('alias')) rowdatas = [] for record in records: datas = [] for col in columns: if col in ignores: continue txt:str = record.value(col) datas.append(txt.replace('\n'," ")) rowdatas.append(datas) content = self.convert(self._table.name(),self._table.comment(),columns,colComments,rowdatas) with open(self._path, 'w',encoding='utf-8') as file: file.write(content) def convert(self,tableName:str,tableComment:str,columns:list,colComments:list,rowdatas:list): strTitle = "# " + tableName + '\n' if tableName!='': strTitle+= f"备注:{tableComment}" + '\n' for i in range(len(columns)): strTitle+= f"- 字段名称:{columns[i]}" + '\n' comment = colComments[i] if comment!='': strTitle+= f" - 备注:{comment}" + '\n' markdown_table = "|" # 添加列标题 markdown_table += "|".join(columns) + "|\n" # 添加分隔行 markdown_table += "|" + "|".join(['---' for _ in columns]) + "|\n" # 遍历每个数据行 for row in rowdatas: # 添加数据行 markdown_table += "|" + "|".join(row) + "|\n" return strTitle + "\n" + markdown_table if __name__ == "__main__": intputDir = '' outputDir = '' subdirectories = {} for dp, dn, fn in os.walk(intputDir): for d in dn: subdirectories[d] = os.path.join(dp, d) for dirName,dirPath in subdirectories.items(): prjSon = ProjectJson(dirPath) prjSon.parse() tables = prjSon.tables() for name,table in tables.items(): outputPath = os.path.join(outputDir,dirName,f'{table.name()}.md') mdObj = MarkDown(table,outputPath) mdObj.build()