Parcourir la source

Fix mountable fs doc (#1224)

* docs: 更新可挂载文件系统文档格式和内容

- 调整markdown格式和排版

Signed-off-by: longjin <longjin@DragonOS.org>

* fix(doc_translator): 修正代码块正则表达式匹配逻辑

优化多行代码块和内联代码块的正则表达式匹配,确保正确处理代码块格式

Signed-off-by: longjin <longjin@DragonOS.org>

---------

Signed-off-by: longjin <longjin@DragonOS.org>
LoGin il y a 4 jours
Parent
commit
7ea0781b79
2 fichiers modifiés avec 11 ajouts et 14 suppressions
  1. 4 9
      docs/kernel/filesystem/vfs/mountable_fs.md
  2. 7 5
      tools/doc_translator.py

+ 4 - 9
docs/kernel/filesystem/vfs/mountable_fs.md

@@ -5,6 +5,7 @@ Email: <sparkhhhhhhhhhh@outlook.com>
 :::
 
 # 设计
+
 ```mermaid
     graph TD
     subgraph 用户层 / 系统调用
@@ -34,29 +35,23 @@ Email: <sparkhhhhhhhhhh@outlook.com>
     click B "#" "produce_fs 函数"
     click O "#" "FSMAKER - 文件系统工厂数组"
 ```
-## 流程说明:
-
 
-- 具体的文件系统(例如`RamFS`)通过实现```MountableFileSystem trait```,并使用 ```register_mountable_fs!``` 宏,将自身的创建逻辑注册到 `FSMAKER` 中。
+## 流程说明:
 
 
+- 具体的文件系统(例如`RamFS`)通过实现`MountableFileSystem trait`,并使用 `register_mountable_fs!` 宏,将自身的创建逻辑注册到 `FSMAKER` 中。
 - 用户通过 `sys_mount` 系统调用请求挂载一个文件系统。
-
 - `sys_mount` 调用 `produce_fs` 函数,传入文件系统类型、原始挂载数据和源路径。
-
 - `produce_fs` 遍历全局的 `FSMAKER` 数组,查找与请求的文件系统类型名称匹配的 FileSystemMaker。
-
 - 如果找到,首先调用 `maker.builder`(它内部会调用具体文件系统的 `make_mount_data` 方法)来处理原始数据,生成一个可选的 `mount_data` 对象。
-
 - 接着,调用 `maker.build`(它内部会调用具体文件系统的 `make_fs` 方法),并传入上一步生成的 mount_data,从而创建出文件系统实例。
-
 - 成功创建的文件系统实例(`Arc<dyn FileSystem>`)被返回并用于后续的挂载操作。
-
 - 如果找不到对应的文件系统类型,则返回错误。
 
 ## 其他
 
 目前 DragonOS 支持挂载的文件系统包括 `ramfs`、`ext4` 和 `vfat`。在 DragonOS 中挂载硬盘文件时,要注意:
+
 - 由于系统暂时无法直接查看硬盘的文件系统类型,在挂载前需要提前明确目标分区所使用的文件系统类型。
 - 挂载操作需要指定对应的硬盘设备名称(位于 /dev 下)。
 - 这些硬盘设备文件来源于通过修改 `tools/run-qemu.sh` 启动脚本,将制作好的硬盘镜像文件传入系统。virtio 硬盘设备命名示例如 `vda1`、`vdb1`,硬盘在 DragonOS 内的设备名称是根据 `run-qemu.sh` 中镜像传入的顺序自动分配(a,b,c等等)的,其中的数字表示分区号。

+ 7 - 5
tools/doc_translator.py

@@ -212,14 +212,16 @@ class DocumentTranslator:
         for block in exclude_blocks:
             text = text.replace(block, '')
 
-        # 处理多行代码块
-        code_blocks = re.findall(r"```.*?\n.*?```", text, re.DOTALL)
+        # 处理多行代码块 - 修正的正则表达式
+        # 匹配以```开头(可选语言标识符)并以```结尾的多行代码块
+        code_blocks = re.findall(r"^```[a-zA-Z]*\n.*?\n```$", text, re.MULTILINE | re.DOTALL)
         for i, block in enumerate(code_blocks):
             placeholder = f"__CODE_BLOCK_{i}__"
             preserved[placeholder] = block
             text = text.replace(block, placeholder)
-        # 处理内联代码块
-        inline_code = re.findall(r"`[^`]+`", text)
+        
+        # 处理内联代码块 - 确保不匹配已经处理的多行代码块
+        inline_code = re.findall(r"`[^`\n]+`", text)
         for i, code in enumerate(inline_code):
             placeholder = f"__INLINE_CODE_{i}__"
             preserved[placeholder] = code
@@ -254,7 +256,7 @@ class DocumentTranslator:
         while retry > 0:
             try:
                 lang_name = CONFIG["target_languages"].get(lang, "English")
-                prompt = f"你是一个专业的文档翻译助手,请将以下中文技术文档准确翻译成{lang_name},保持技术术语的正确性和格式不变."
+                prompt = f"你是一个专业的文档翻译助手,请将以下中文技术文档准确翻译成{lang_name},保持技术术语的正确性和格式不变.\n直接输出翻译后的内容,不要添加任何额外的无关内容。\n\n"
 
                 # disable qwen3's thinking mode
                 if "qwen3" in CONFIG["model"].lower():