Compare commits

..

18 Commits

Author SHA1 Message Date
343eb52856
reeee 2023-12-14 10:10:13 +08:00
74bbf2bfcf
Update workflow to include path configuration 2023-12-14 10:02:27 +08:00
450c879742
尝试直接checkout
Some checks failed
自动生成 label / Generate-label (push) Failing after 1m6s
2023-12-14 09:59:32 +08:00
60680bacad
a
Some checks failed
自动生成 label / Generate-label (push) Failing after 31s
2023-12-10 12:16:43 +08:00
d8774da206
reee
Some checks failed
自动生成 label / Generate-label (push) Failing after 32s
2023-12-10 12:01:27 +08:00
62a53a4edd
好好好
Some checks failed
自动生成 label / Generate-label (push) Failing after 41s
2023-12-10 11:55:55 +08:00
69d34472a8
update action
Some checks failed
自动生成 label / Generate-label (push) Failing after 21s
2023-12-10 11:52:51 +08:00
2558274afb
work it on yml?
Some checks failed
自动生成 label / Generate-label (push) Failing after 22s
push

看起来还是得要node是吧

用这个

还得ensurepip是吧

用一下 setup python

reee

行

v4

?

还得是local

使用新 mirror 的

?

不用了,行吧

?

v1

?

行吗?
2023-12-10 11:40:30 +08:00
58350f50a1
Add | 添加一些相关测试,明确一下格式 2023-12-09 01:47:35 +08:00
1a31c909de
移动进去 2023-12-09 00:25:46 +08:00
10b049a5e6
进行一个删除5、6 2023-12-08 20:11:00 +08:00
35ec32ae70
进行一个重命名 2023-12-07 21:04:57 +08:00
89e89b8280
重命名 "7" -> CSA-vertical-4gt-32bit 2023-12-07 20:49:54 +08:00
adbcbf7e43
Merge branch 'main' into index-rebase
# Conflicts:
#	tags/tags/2rt_pipeline.md
2023-12-07 19:54:04 +08:00
3a6167e283
进行一个reaname 2023-12-07 19:36:53 +08:00
6437b5a047 添加模块 2023-12-07 18:47:00 +08:00
db0235be8d 修复bug 2023-12-07 14:21:01 +08:00
85c3705ded 调整命名规范,添加标签 2023-12-07 14:17:31 +08:00
31 changed files with 159 additions and 271 deletions

View File

@ -2,9 +2,10 @@ name: 自动生成 label
# main 分支推送
on:
push:
branches:
- main
[push]
# push:
# branches:
# - main
jobs:
Generate-label:
@ -12,43 +13,31 @@ jobs:
steps:
- name: 获取仓库
uses: http://shenjack.top:5100/gitea-server/checkout@v4
with:
path: main
- name: pip
run: |
cd ..
git clone http://shenjack.top:5100/gitea-server/python-packs.git
cd python-packs
python3 -m ensurepip
cd ../ARS-docs
# - name: ensure pip
# uses: http://shenjack.top:5100/gitea-server/python-packs@1cd32b1235ba23d51524b6870c0735f63efcffc2
- name: ensurepip
uses: http://shenjack.top:5100/gitea-server/checkout@v4
with:
repository: gitea-server/python-packs
with:
path: python-packs
- name: 安装依赖
run: |
ls -la .
ls -la ..
ls -la ../..
python3 -m ../python-packs/ensurepip
python3 -m pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
python3 -m pip install -U pip
python3 -m pip install -U -r scripts/requirement.txt
ls . -la
ls scripts
python3 -m pip install mistune
- name: 生成 label
run: |
python3 scripts/parse-label.py
cp build/tags.toml modules/tags.toml
- name: 检查是否有改动
run: |
git config user.name gitea-actions
git config user.email gitea-action@shenjack.top
if [ -n "$(git status --porcelain)" ]; then
git add .
git commit -m "gen by python script"
# 创建并切换到deploy分支
git checkout -b deploy
# 将更改添加到deploy分支的最新提交
git commit --amend --no-edit
# 推送到deploy分支
git push origin HEAD --force
else
echo "工作区没有改动"
fi
python3 generate_label.py
# https://gitea.com/actions/gitea-release-action

4
.gitignore vendored
View File

@ -1,4 +0,0 @@
venv
env
*__pycache__*
build

9
.idea/.gitignore vendored
View File

@ -1,9 +0,0 @@
# 默认忽略的文件
/shelf/
/workspace.xml
# 基于编辑器的 HTTP 客户端请求
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
*

View File

@ -1,5 +0,0 @@
# 如何使用这个索引
## 网页
## git

BIN
modules/10/10.litematic (Stored with Git LFS) Normal file

Binary file not shown.

BIN
modules/10/10.schem (Stored with Git LFS) Normal file

Binary file not shown.

BIN
modules/10/10_bottom.nbt (Stored with Git LFS) Normal file

Binary file not shown.

BIN
modules/10/10_top.nbt (Stored with Git LFS) Normal file

Binary file not shown.

BIN
modules/11/11.litematic (Stored with Git LFS) Normal file

Binary file not shown.

BIN
modules/11/11.schem (Stored with Git LFS) Normal file

Binary file not shown.

BIN
modules/11/11_bottom.nbt (Stored with Git LFS) Normal file

Binary file not shown.

BIN
modules/11/11_top.nbt (Stored with Git LFS) Normal file

Binary file not shown.

BIN
modules/12/12.litematic (Stored with Git LFS) Normal file

Binary file not shown.

BIN
modules/12/12.nbt (Stored with Git LFS) Normal file

Binary file not shown.

BIN
modules/12/12.schem (Stored with Git LFS) Normal file

Binary file not shown.

BIN
modules/13/13.litematic (Stored with Git LFS) Normal file

Binary file not shown.

BIN
modules/13/13.schem (Stored with Git LFS) Normal file

Binary file not shown.

BIN
modules/13/13_bottom.nbt (Stored with Git LFS) Normal file

Binary file not shown.

BIN
modules/13/13_top.nbt (Stored with Git LFS) Normal file

Binary file not shown.

BIN
modules/15/15.litematic (Stored with Git LFS) Normal file

Binary file not shown.

BIN
modules/15/15.nbt (Stored with Git LFS) Normal file

Binary file not shown.

BIN
modules/15/15.schem (Stored with Git LFS) Normal file

Binary file not shown.

BIN
modules/8/8.litematic (Stored with Git LFS) Normal file

Binary file not shown.

BIN
modules/8/8.schem (Stored with Git LFS) Normal file

Binary file not shown.

BIN
modules/8/8_bottom.nbt (Stored with Git LFS) Normal file

Binary file not shown.

BIN
modules/8/8_top.nbt (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -1,5 +1,21 @@
---
module
```toml
tags = [
"小型模块",
"算术运算模块",
"加/减法器",
"二级模块",
"静音",
"传统红石",
"无容器",
"Java版"
]
authors = ["Fredbill"]
title = "CCA-vertial-20gt-32bit"
description = "竖式 32位 20gt 加法器"
[version]
java = "1.16+"
```
---
# 32位封闭进位加法器

View File

@ -1,6 +1,6 @@
# ARS 模块索引
>作者很懒,直接就用GPT写了,要不然得好写半小时 :P
>该文档正在完善中。
![Doc Logo](assets/image/index.png)
@ -22,36 +22,19 @@ git clone http://shenjack.top:5100/ARS/ARS-docs.git
在仓库的`modules`目录中,选择你所需要的模块名称,进入该文件夹,其内就包含了该模块本体。
对于扩展名为`nbt`的模块文件,请将其复制或粘贴至`.minecraft/saves/<World Name>/generated/minecraft/structures`目录。然后启动Minecraft进入世界后放置结构方块选择“加载”模式输入文件名称点击“加载”后会出现一个框架这代表模块将会生成的位置。再点一次“加载”模块就能正确生成了。
- 对于扩展名为`nbt`的模块文件,请将其复制或粘贴至`.minecraft/saves/<World Name>/generated/minecraft/structures`目录。然后,~~瑞典原神~~Minecraft启动进入世界后放置结构方块选择“加载”模式输入文件名称点击“加载”后会出现一个框架这代表模块将会生成的位置。再点一次“加载”模块就能正确生成了。
- 对于扩展名为`schem`的模块文件,你需要下载并启用[World Edit](https://enginehub.org/worldedit)模组。
- 模组文件的命名格式为`worldedit-mod-<version>.jar`。请将其复制或粘贴至`.minecraft/mods`目录。这样,进入世界时就可以使用它了。**请注意:必须提前下载并安装[Fabric](https://fabricmc.net)才会出现`mods`文件夹!**
对于扩展名为`schem`的模块文件,你需要下载并启用[World Edit](https://enginehub.org/worldedit)模组。模组文件的命名格式为`worldedit-mod-<version>.jar`。请将其复制或粘贴至`.minecraft/mods`目录。这样,进入世界时就可以使用它了。**请注意:必须提前下载并安装[Fabric](https://fabricmc.net)才会出现`mods`文件夹!**
你可以按照以下步骤粘贴:
1. **加载原理图**:输入`/schematic load <fileName>`即可将你准备好的原理图加载。
2. **粘贴原理图**:输入`/paste`即可完成粘贴。
对于扩展名为`litematic`的模块文件,你需要下载并启用[Litematica](https://www.curseforge.com/minecraft/mc-mods/litematica)模组。模组文件的命名格式为`litematica-<version>.jar`。请将其复制或粘贴至`.minecraft/mods`目录。这样,进入世界时就可以使用它了。**请注意:必须提前下载并安装[Fabric](https://fabricmc.net)才会出现`mods`文件夹!**
一旦你准备好了这些,你可以按照以下步骤使用投影:
1. **打开投影**:在游戏中,默认按键`M`可以打开Litematica界面。
2. **加载原理图**:选择“加载原理图”选项,然后从你放入的`.minecraft/schematics`目录中选择对应的`.schem`或`.litematic`文件。加载完成后,你将能在世界上预览该模块。
3. **调整位置**:使用投影工具(通常为木棍),你可以通过按键组合来调整投影的位置和方向。要实现调整投影的位置,你需要手持投影工具并将模式设置为2/5/9使用`Ctrl`+`滚轮`进行切换)。使用`Ctrl`+`滚轮`可以调整投影的高度;而使用`Alt`+`滚轮`则可以精确调整投影的位置。
4. **粘贴投影**当一切调整完毕后确保你手持投影工具并将模式设置至5。然后按下你在配置菜单->热键中设置的`执行操作`(execute operation)键。这将把投影粘贴到世界中。**请注意**新安装的Litematica并没有默认的执行操作键所以务必先进行设置。
**注意**:如果你开启了版本隔离,那么上述的`.minecraft`目录将变为`.minecraft/versions/<versionName>/`。请根据你的实际游戏版本进行相应的调整。
>待办:亟需完善具体使用步骤,如导入`.litematic`文件到玩家世界的方法。
## 贡献
我们欢迎所有对红石电路和Minecraft有兴趣的朋友为这份文档贡献自己的力量。您的每一个建议、修改和新增内容都将帮助这份文档变得更加完善为更多的玩家提供便利
欢迎有志人士为这份文档的发展贡献出自己的力量。我们坚信,星星之火,可以燎原。
在贡献之前,请您仔细阅读以下指南,以确保您的贡献能够被顺利接受并整合到文档中
为更好地帮助我们发展,我们需要你遵循以下约定:
1. **提交工单**:在添加新标签或模块之前,请先在[我们的工单系统](http://shenjack.top:5100/ARS/ARS-docs/issues)中发起一个工单。工单的标题应按照“添加 标签/模块 申请 <后缀>”的格式进行命名,其中“<后缀>”可以是简短的描述或关键词,以便我们快速了解您的需求。
2. **说明内容**:在工单中,请详细说明您想要添加的新标签或模块的相关信息。包括标签或模块的名称、描述、用途、使用方法、相关图片等。这将帮助我们更好地理解和评估您的需求,以及后续的整合工作。
3. **文件格式和命名**提交的文件应遵循Markdown格式规范并确保文件名与标签或模块的名称一致。图片文件应存放在与说明文档相同的文件夹中并以有意义的名称进行命名。
4. **检查内容**:在提交之前,请仔细检查您的内容,确保没有其他问题。这将有助于提高文档的整体质量和可读性。
5. **等待审核**:提交工单后,我们的团队将对您的申请进行审核。如果申请被接受,我们将尽快将您的贡献整合到文档中,并通过工单系统通知您。
通过遵循以上指南您将能够更高效地为我们贡献自己的力量并帮助这份文档不断完善和发展。我们期待您的加入共同为Minecraft社区做出贡献
- 若有在`tags/tags`目录内添加新标签的需求,文件名应遵循`snake_case`命名法。
- 若有在`modules`添加模块的需求,存放模块的文件夹名,单词与单词之间用短横隔开,且遵循该命名格式:`<abbr>-<h_or_v>-<lagency>-<(optional)tick>-<(Optional)appendix>`。
- 其中,`abbr`代表模块英文名称缩写 (全大写) `h_or_v`代表该模块的横竖类别,例如横式模块就写`horizontal``lagency`代表模块延迟;`(Optional)tick`表示模块流水周期,有则写之,否则不写;`(Optional)appendix`代表该模块的其它附加信息,同样有则写之。
- 模块内的`README.md`编写规范详见该[issue](http://shenjack.top:5100/ARS/ARS-docs/issues/4)。其中,模块描述应当言简意赅,避免陈词滥调。

View File

@ -1,152 +1,28 @@
from pathlib import Path
from typing import Union, Callable
from pprint import pprint
import mistune
from qtoml.encoder import dumps
from qtoml.decoder import loads
from lib_not_dr import loggers
from lib_not_dr.types.options import Options
ast_markdown = mistune.create_markdown(renderer='ast')
ast_markdown = mistune.create_markdown(renderer="ast")
ast_type = list[dict[str, Union[str, dict]]]
def get_all_iter(
ast: ast_type, type: str, func: Callable[[ast_type], bool] = None
) -> tuple[int, dict]:
for i, node in enumerate(ast):
if node["type"] == type:
if func is not None:
if not func(node):
continue
yield i, node
yield -1, {}
def get_text(ast: ast_type) -> str:
"""
返回第一个找到的字符串
"""
if ast['type'] == 'text':
return ast['raw']
elif ast['type'] in ('link', 'block_text', 'list_item', 'list'):
return get_text(ast['children'][0])
print('unkown type', ast['type'], ast)
class TagParser(Options):
module_root: Path
tags: dict[str, list[str]] = {}
tag_map: dict[str, list[str]] = {}
logger: loggers.logger.Logger = None # noqa
def load_module(self, **kwargs):
for readme in self.module_root.rglob("readme.md"):
self.logger.debug(readme.absolute(), tag="load file")
self.get_module_data(readme)
tag_toml = dumps(self.tags)
tag_path = self.module_root / ".." / "build" / "tags.toml"
tag_path.parent.mkdir(parents=True, exist_ok=True)
tag_path.touch(exist_ok=True)
with open(tag_path, "w", encoding="utf-8") as file:
file.write(tag_toml)
def get_module_data(self, module_path: Path):
with open(module_path, "r", encoding="utf-8") as f:
def read_files(module_path: Path):
with open(module_path, 'r', encoding='utf-8') as f:
file = f.read()
ast = ast_markdown(file)
if len(ast) == 0:
return
if ast[0] != {"type": "thematic_break"}:
# 排除开头不是注释块的
return
self.logger.info(f"开始解析 {ast[1]}")
config_code = ast[1].get("raw", "")
config_dict = loads(config_code)
self.logger.trace(config_dict)
if not (tag_list := config_dict.get("tags")):
self.logger.warn("未找到 tags", tag=str(module_path))
return
for tag in tag_list:
if tag not in self.tags:
self.tags[tag] = [module_path.__str__()]
else:
self.tags[tag].append(module_path.__str__())
def init(self, **kwargs) -> bool:
self.logger = loggers.get_logger()
self.logger.global_level = 0
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
# 找到二级标题
start_tag = get_all_iter(
tag_ast, "heading", lambda node: node["attrs"]["level"] == 2
)
start_tag, node = next(start_tag)
if start_tag == -1:
self.logger.error("未找到二级标题")
return False
# 获取 tag
tag_ast: ast_type = tag_ast[start_tag + 1 :]
start_tag = get_all_iter(tag_ast, "list")
start_tag, node = next(start_tag)
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"
]
# 顺手过滤一下
for tag in tag_ast:
# self.logger.debug([(item['type'], item['children']) for item in tag])
this_tag = get_text(tag[0])
if len(tag) == 1:
# 只有一个 tag, 无别名
self.tag_map[this_tag] = [this_tag]
self.logger.debug(f'添加 tag {this_tag}')
# len > 1
elif len(tag) >= 1:
# 寻找 "别名"
tag_names = tag[1]['children']
tag_list_start = get_all_iter(tag_names, 'list_item', lambda ast: get_text(ast) == '别名')
tag_list_start, node = next(tag_list_start)
if tag_list_start == -1:
continue
sub_names = [this_tag]
for sub_name in node['children'][1]['children']:
sub_names.append(get_text(sub_name))
self.logger.debug(f"添加 tag {this_tag} 和别名 {sub_names}")
self.tag_map[this_tag] = sub_names
# 获取 tag 列表
self.logger.info(f'可用 tag: {self.tag_map}')
with open('./tags/tag.toml', 'w', encoding='utf-8') as file:
file.write(dumps(self.tag_map))
parsed = ast_markdown(file)
return parsed
if __name__ == "__main__":
parser = TagParser(module_root=Path("modules"))
parser.load_module()
parser.logger.info(parser.tags)
if __name__ == '__main__':
module_path = Path('modules')
# walk through the modules
# for every markdown file
# parse the label
for md_file in module_path.rglob('*.md'):
print(md_file)
parsed = read_files(md_file)
pprint(parsed)

View File

@ -1,3 +0,0 @@
mistune
lib-not-dr
qtoml

View File

@ -1,47 +1,26 @@
# 标签索引
![标签索引logo](../assets/image/tag_index.png)
## 所有可用标签
- [小型模块](./tags/small_module.md)
- 方块数量小于10000的模块
- 别名
- 小模块
- [中型模块](./tags/middle_size_module.md) : 方块数量在10001-100000之间的模块。
- [大型模块](./tags/large_module.md) : 方块数量>100000的模块。
- [算术单元](./tags/au.md) : 具有运算功能的模块。
- [加/减法器](./tags/adder_or_subtractor.md) : 具有加/减法功能的模块。
- [ALU (算逻单元)](./tags/alu.md) : 算术逻辑单元
- 别名
- ALU
- 算逻单元
- [显示模块](./tags/display_module.md) : 具备显示功能的模块。
- 别名
- 显示器
- [存储模块](./tags/storage_module.md) : 具备存储功能的模块。
- 别名
- 存储
- [数码管](./tags/digital_display.md) : 显示数字的专用模块。
- [成品模块](./tags/completed_module.md) : 已经完成设计的模块如CPU
- [一级模块](./tags/primary_module.md) : 组成整个模块的次级模块。如ALU (算术逻辑单元) PC (程序计数器) MM (主存) 等。
- 别名
- 次级模块
- [二级模块](./tags/secondary_module.md) : 次级模块的次级模块。如CCA (进位取消全加器) RAM (随机存储器) ROM (只读存储器) 等。
- [子模块](./tags/submodule.md) : 二级模块的次级模块。如单个逻辑门,导线等。
- [Java版](./tags/je.md) : Java版模块
- 别名
- Java
- [基岩版](./tags/be.md) : 基岩版模块。
- 别名
- 基岩
- BE
- [版本特性](./tags/version_feature.md) : 利用了版本特性的模块。
- [2rt流水](./tags/2rt_pipeline.md) : 支持2rt流水线的模块。
- 别名
- 2t
- [时序严格](./tags/strict_timing.md) : 对于电路时序要求严格的模块。
- [无容器](./tags/no_container.md) : 没有容器的模块。
- [静音](./tags/silent.md) : 不会发出响声的模块。
- [单片](./tags/single_chip.md) : 1高或1宽2高或2宽的模块。
- [传统红石](./tags/traditional_redstone.md) : 仅使用红石方块特性,不使用墙电,水电,树电,脚电等其他特性的模块。
##s 所有可用标签:
- [小型模块](./tags/small_module.md) : 方块数量小于10000的模块
- [中型模块](./tags/middle_size_module.md) : 方块数量在10001-100000之间的模块。
- [大型模块](./tags/large_module.md) : 方块数量>100000的模块。
- [算术单元](./tags/au.md) : 具有运算功能的模块。
- [加/减法器](./tags/adder_or_subtractor.md) : 具有加/减法功能的模块。
- [ALU (算逻单元) ](./tags/alu.md) : 算术逻辑单元
- [显示模块](./tags/display_module.md) : 具备显示功能的模块。
- [存储模块](./tags/storage_module.md) : 具备存储功能的模块。
- [数码管](./tags/digital_display.md) : 显示数字的专用模块。
- [成品模块](./tags/completed_module.md) : 已经完成设计的模块如CPU
- [一级模块](./tags/primary_module.md) : 组成整个模块的次级模块。如ALU (算术逻辑单元) PC (程序计数器) MM (主存) 等。
- [二级模块](./tags/secondary_module.md) : 次级模块的次级模块。如CCA (进位取消全加器) RAM (随机存储器) ROM (只读存储器) 等。
- [子模块](./tags/submodule.md) : 二级模块的次级模块。如单个逻辑门,导线等。
- [Java版](./tags/je.md) : Java版模块
- [基岩版](./tags/be.md) : 基岩版模块。
- [版本特性](./tags/version_feature.md) : 利用了版本特性的模块。
- [2rt流水](./tags/2rt_pipeline.md) : 支持2rt流水线的模块。
- [时序严格](./tags/strict_timing.md) : 对于电路时序要求严格的模块。
- [无容器](./tags/no_container.md) : 没有容器的模块。
- [静音](./tags/silent.md) : 不会发出响声的模块。
- [单片](./tags/single_chip.md) : 1高或1宽的模块。
- [传统红石](./tags/traditional_redstone.md) : 仅使用红石方块特性,不使用墙电,水电,树电,脚电等其他特性的模块。