diff --git a/tools/doc_tool/gen_markdown.py b/tools/doc_tool/gen_markdown.py
index 25d7a7ff..971de88f 100644
--- a/tools/doc_tool/gen_markdown.py
+++ b/tools/doc_tool/gen_markdown.py
@@ -245,6 +245,12 @@ module doc
'''
+def multilines_add_prefix(content, prefix):
+ lines = content.split("\n")
+ new_lines = []
+ for line in lines:
+ new_lines.append(prefix + line)
+ return "\n".join(new_lines)
def module_to_md(pre_modules, module_name, module, start_comment, module_join_char = "."):
pre_modules_str = module_join_char.join(pre_modules)
@@ -252,10 +258,20 @@ def module_to_md(pre_modules, module_name, module, start_comment, module_join_ch
content = '---\ntitle: {}{}{}\n---\n\n{}\n\n'.format(
pre_modules_str, module_join_char, module_name, m_doc)
content += start_comment
+ skip_keys = ["maixpy", "maixcdk", "py_doc", "brief"]
+ def have_doc_kv(doc_comment):
+ keys = list(doc_comment.keys())
+ valid_keys = []
+ for k in keys:
+ if k in skip_keys:
+ continue
+ valid_keys.append(k)
+ return len(valid_keys) > 0
+
def gen_md_doc_from_comment(doc_comment):
content = ''
for doc_k, v in doc_comment.items():
- if doc_k in ["maixpy", "maixcdk", "py_doc"]:
+ if doc_k in skip_keys:
continue
_content = ''
if type(v) == list:
@@ -294,13 +310,14 @@ def module_to_md(pre_modules, module_name, module, start_comment, module_join_ch
if item["type"] != "enum":
continue
content += '### {}\n\n'.format(key.replace("_", "\_"))
+ content += item["doc"].get("brief", "") + "\n\n"
content += '| item | doc |\n'
content += '| --- | --- |\n'
content += gen_md_doc_from_comment(item["doc"])
content += '| **values** | '
for value in item["values"]:
content += '**{}**: {}
'.format(value[0], value[2].replace('\n', '
'))
- content += '\n**C++ defination code**:\n```cpp\n{}\n```\n'.format(item["def"])
+ content += '\n> C++ defination code:\n> ```cpp\n{}\n> ```\n'.format(multilines_add_prefix(item["def"], "> "))
content += "\n\n"
# Variable
@@ -309,12 +326,13 @@ def module_to_md(pre_modules, module_name, module, start_comment, module_join_ch
if item["type"] != "var":
continue
content += '### {}\n\n'.format(key.replace("_", "\_"))
+ content += item["doc"].get("brief", "") + "\n\n"
content += '| item | doc |\n'
content += '| --- | --- |\n'
content += gen_md_doc_from_comment(item["doc"])
content += '| **value** | **{}** |\n'.format(item["value"].replace('\n', '
')) if item["value"] else ""
content += '| **readonly**| {} |\n'.format(item["readonly"])
- content += '\n**C++ defination code**:\n```cpp\n{}\n```\n'.format(item["def"])
+ content += '\n> C++ defination code:\n> ```cpp\n{}\n> ```\n'.format(multilines_add_prefix(item["def"], "> "))
content += "\n\n"
# Function
@@ -325,10 +343,12 @@ def module_to_md(pre_modules, module_name, module, start_comment, module_join_ch
content = '### {}\n\n'.format(key.replace("_", "\_"))
if "py_def" in item:
content += f'```python\n{item["py_def"]}\n```\n'
- content += '| item | doc |\n'
- content += '| --- | --- |\n'
- content += gen_md_doc_from_comment(item["doc"])
- content += '\n**C++ defination code**:\n```cpp\n{}\n```\n'.format(item["def"])
+ content += item["doc"].get("brief", "") + "\n\n"
+ if have_doc_kv(item["doc"]):
+ content += '| item | doc |\n'
+ content += '| --- | --- |\n'
+ content += gen_md_doc_from_comment(item["doc"])
+ content += '\n> C++ defination code:\n> ```cpp\n{}\n> ```\n'.format(multilines_add_prefix(item["def"], "> "))
return content
for key, item in module["members"].items():
if item["type"] != "func":
@@ -346,10 +366,12 @@ def module_to_md(pre_modules, module_name, module, start_comment, module_join_ch
if item["type"] != "class":
continue
content += '### {}\n\n'.format(key.replace("_", "\_"))
- content += '| item | doc |\n'
- content += '| --- | --- |\n'
- content += gen_md_doc_from_comment(item["doc"])
- content += '\n**C++ defination code**:\n```cpp\n{}\n```\n'.format(item["def"])
+ content += item["doc"].get("brief", "") + "\n\n"
+ if have_doc_kv(item["doc"]):
+ content += '| item | doc |\n'
+ content += '| --- | --- |\n'
+ content += gen_md_doc_from_comment(item["doc"])
+ content += '\n> C++ defination code:\n> ```cpp\n{}\n> ```\n'.format(multilines_add_prefix(item["def"], "> "))
content += '\n'
def gen_class_func_info(key, item, overload_count = -1):
supported_types = ["func", "var"]
@@ -360,6 +382,7 @@ def module_to_md(pre_modules, module_name, module, start_comment, module_join_ch
content = '#### {}\n\n'.format(key.replace("_", "\_"))
if "py_def" in item:
content += f'```python\n{item["py_def"]}\n```\n'
+ content += item["doc"].get("brief", "") + "\n\n"
content += '| item | doc |\n'
content += '| --- | --- |\n'
content += '| **type** | {} |\n'.format(item["type"])
@@ -367,7 +390,7 @@ def module_to_md(pre_modules, module_name, module, start_comment, module_join_ch
content += '| **static** | {} |\n'.format(item["static"])
if item["type"] == "var":
content += '| **readonly** | {} |\n'.format(item["readonly"])
- content += '\n**C++ defination code**:\n```cpp\n{}\n```\n'.format(item["def"])
+ content += '\n> C++ defination code:\n> ```cpp\n{}\n> ```\n'.format(multilines_add_prefix(item["def"], "> "))
return content
for key, item in item["members"].items():