Skip to content

ChHsiching/lake2html

Repository files navigation

Lake2HTML 🚧

Rust License Status

一个正在开发中的命令行工具,目标是将语雀(Yuque)的 Lake 格式文档转换为标准 HTML 格式。

🚧 开发状态

注意:此项目目前处于早期开发阶段,功能尚不完整。

已完成

  • ✅ 基础项目架构搭建
  • ✅ Rust 开发环境配置
  • ✅ CLI 命令行接口框架
  • ✅ 基础数据模型定义
  • ✅ 简单的 Lake 格式解析(标题、段落)
  • ✅ 基础 HTML 输出功能
  • ✅ 基础测试框架

开发中

  • 🚧 完整的 Lake 格式解析
  • 🚧 复杂元素支持(表格、列表、图片等)
  • 🚧 Lake 特有组件处理
  • 🚧 样式和模板系统

🚀 安装

从源码编译

# 克隆仓库
git clone https://github.com/ChHsiching/lake2html.git
cd lake2html

# 编译安装
cargo build --release

# 运行
./target/release/lake2html --help

使用 Cargo 安装

cargo install lake2html

📖 使用方法

⚠️ 当前版本为开发版本,功能有限

基础用法

# 转换单个文件(目前仅支持基础元素)
cargo run -- examples/个人规划.lake -o output.html

# 查看帮助信息
cargo run -- --help

# 运行测试
cargo test

命令选项

将语雀 Lake 格式文档转换为 HTML

Usage: lake2html [OPTIONS] [INPUT] [COMMAND]

Commands:
  convert  转换单个文件
  batch    批量转换目录
  help     Print this message or the help of the given subcommand(s)

Arguments:
  [INPUT]  输入文件或目录

Options:
  -o, --output <OUTPUT>        输出文件或目录
  -r, --recursive              递归处理目录
  -t, --template <TEMPLATE>    自定义模板文件
      --style-mode <MODE>      样式处理模式 [inline|external|none]
      --format <FORMAT>        输出格式 [full-page|fragment]
  -v, --verbose                详细输出
  -h, --help                   显示帮助信息
  -V, --version                显示版本信息

当前支持的功能

# 基础转换测试
cargo run -- examples/个人规划.lake -o test.html

# 目前输出的 HTML 包含:
# - 文档标题
# - 基础标题(H1-H6)  
# - 段落文本
# - 简单的内联样式

⚠️ 注意:复杂的 Lake 组件(表格、列表、卡片等)目前尚未完全实现。

🏗️ 项目结构

lake2html/
├── src/
│   ├── main.rs              # 程序入口
│   ├── lib.rs               # 库接口
│   ├── cli.rs               # CLI 接口定义
│   ├── parser/              # 解析器模块
│   │   ├── mod.rs
│   │   ├── lake_parser.rs   # Lake 格式解析器
│   │   └── components.rs    # 组件解析器
│   ├── converter/           # 转换器模块
│   │   ├── mod.rs
│   │   ├── html_converter.rs # HTML 转换器
│   │   └── template.rs      # 模板处理
│   ├── models/              # 数据模型
│   │   ├── mod.rs
│   │   ├── document.rs      # 文档结构
│   │   └── config.rs        # 配置结构
│   └── utils/               # 工具函数
│       ├── mod.rs
│       ├── file_handler.rs  # 文件处理
│       └── error.rs         # 错误定义
├── tests/                   # 测试文件
├── examples/                # 示例文件
├── docs/                    # 文档
└── templates/               # HTML 模板

🔧 开发

环境要求

  • Rust 1.89.0 或更高版本
  • Cargo(随 Rust 一起安装)

构建

# 调试构建
cargo build

# 发布构建
cargo build --release

# 运行测试
cargo test

# 检查代码
cargo check

运行测试

# 运行所有测试
cargo test

# 运行特定测试
cargo test test_basic_lake_parsing

# 显示测试输出
cargo test -- --nocapture

📝 Lake 格式支持状态

✅ 基础支持

  • 📋 文档标题和元数据提取
  • 📖 基础标题解析(H1-H6)
  • 📄 段落文本提取

🚧 开发中

  • 📌 列表(有序、无序、任务列表)
  • 📊 表格解析
  • 💬 引用块
  • 🖼️ 图片和链接
  • 💻 代码块和内联代码
  • ➖ 分隔线

📋 待实现

  • 🃏 Card 组件
  • 🧠 思维导图(board 组件)
  • 📈 图表和复杂媒体
  • 🎨 完整样式系统
  • 📎 文件附件处理

🔮 未来计划

Phase 2: 高级特性

  • 完整的 Lake 组件支持
  • 自定义主题和模板
  • 插件系统
  • 配置文件支持

Phase 3: 集成工具

  • Web 服务 API
  • GUI 桌面应用
  • VS Code 扩展
  • 在线转换服务

Phase 4: 生态系统

  • React/Vue 组件库
  • 静态站点生成器集成
  • 博客系统支持
  • 文档站点主题

🤝 贡献

欢迎贡献代码、报告问题或提出建议!

  1. Fork 这个仓库
  2. 创建您的特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交您的更改 (git commit -m '✨ Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开一个 Pull Request

提交规范

我们使用 gitmojiconventional commits 规范:

✨ feat: 添加新功能
🐛 fix: 修复bug
📚 docs: 更新文档
🎨 style: 代码格式调整
♻️ refactor: 重构代码
✅ test: 添加测试
🔧 chore: 构建过程或辅助工具的变动

📄 许可证

本项目采用 MIT 或 Apache-2.0 双重许可证。详见 LICENSE 文件。

🙏 致谢

  • 语雀 - 提供了优秀的文档编辑体验
  • Rust 社区 - 提供了优秀的工具和库
  • 所有贡献者和用户的支持

📞 联系方式


Made with ❤️ by Lake2HTML Contributors

About

A CLI tool to convert Yuque Lake documents into clean, standards-compliant HTML.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published