From 4be5301af19f0e2616e451edd273b88a070a3fbc Mon Sep 17 00:00:00 2001 From: shenjack <3695888@qq.com> Date: Fri, 15 Dec 2023 06:51:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=80=E4=BA=9B=20tag=20?= =?UTF-8?q?=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/CCA/CCA-vertial-20gt-32bit/readme.md | 18 +------- scripts/parse-label.py | 45 +++++++++++++++++++- tags/readme.md | 5 ++- 3 files changed, 49 insertions(+), 19 deletions(-) diff --git a/modules/CCA/CCA-vertial-20gt-32bit/readme.md b/modules/CCA/CCA-vertial-20gt-32bit/readme.md index a188256..7a1628d 100644 --- a/modules/CCA/CCA-vertial-20gt-32bit/readme.md +++ b/modules/CCA/CCA-vertial-20gt-32bit/readme.md @@ -1,21 +1,5 @@ --- -```toml -tags = [ - "小型模块", - "算术运算模块", - "加/减法器", - "二级模块", - "静音", - "传统红石", - "无容器", - "Java版" -] -authors = ["Fredbill"] -title = "CCA-vertial-20gt-32bit" -description = "竖式 32位 20gt 加法器" -[version] -java = "1.16+" -``` +module --- # 32位封闭进位加法器 diff --git a/scripts/parse-label.py b/scripts/parse-label.py index e5f5c4d..408b796 100644 --- a/scripts/parse-label.py +++ b/scripts/parse-label.py @@ -1,4 +1,5 @@ from pathlib import Path +from pprint import pprint import mistune @@ -9,6 +10,7 @@ from lib_not_dr.types.options import Options ast_markdown = mistune.create_markdown(renderer='ast') +ast_type = list[dict[str, str | dict]] class TagParser(Options): @@ -59,7 +61,48 @@ class TagParser(Options): def init(self, **kwargs) -> bool: self.logger = loggers.get_logger() self.logger.global_level = 0 - return True + self.load_tags() + return False + + def load_tags(self): + tag_list_path = Path("./tags/readme.md") + if not tag_list_path.exists(): + self.logger.error("未找到 tags/readme.md") + return False + + with open(tag_list_path, 'r', encoding='utf-8') as f: + file = f.read() + + tag_ast: ast_type = ast_markdown(file) + start_tag = -1 + for i, node in enumerate(tag_ast): + if node['type'] != 'heading': + continue + if node['attrs']['level'] != 2: + continue + # 说明是二级标题 + start_tag = i + break + if start_tag == -1: + self.logger.error("未找到二级标题") + return False + # 获取 tag + tag_ast: ast_type = tag_ast[start_tag + 1:] + + start_tag = -1 + for i, node in enumerate(tag_ast): + if node['type'] != 'list': + continue + start_tag = i + break + if start_tag == -1: + self.logger.error("未找到 tag 列表") + return False + tag_ast: ast_type = [item['children'] for item in tag_ast[start_tag]['children'] if item.get('type') == 'list_item'] + # 顺手过滤一下 + pprint(tag_ast) + self.logger.info(tag_ast) + # 获取 tag 列表 if __name__ == '__main__': diff --git a/tags/readme.md b/tags/readme.md index 09f0756..95b48cb 100644 --- a/tags/readme.md +++ b/tags/readme.md @@ -4,7 +4,10 @@ ## 所有可用标签 -- [小型模块](./tags/small_module.md) : 方块数量小于10000的模块 +- [小型模块](./tags/small_module.md) + - 方块数量小于10000的模块 + - 别名 + - 小模块 - [中型模块](./tags/middle_size_module.md) : 方块数量在10001-100000之间的模块。 - [大型模块](./tags/large_module.md) : 方块数量>100000的模块。 - [算术单元](./tags/au.md) : 具有运算功能的模块。