2 个不稳定版本
0.1.0 | 2024 年 8 月 13 日 |
---|---|
0.0.1 | 2024 年 7 月 30 日 |
#629 在 命令行界面
每月 233 次下载
52KB
1.5K SLoC
Flashy
!!! 项目仍在早期开发阶段,因此请期待破坏性变更 !!!
一个用 Rust 编写的闪卡 TUI,支持 Anki 风格的重复和用 TOML 编写闪卡。
特性
- 广泛的 CLI 用于管理牌组、复习和闪卡
- 终端 UI (TUI) 使用 fsrs 空间重复来复习卡片
- 使用 任何 配置格式编写闪卡
- 目前可用:json 和 toml,但非常容易扩展到实现 serde 的格式
- 轻松 导入 并合并到现有卡片中
- 导出 数据到所有支持的配置格式
我使用了 fsrs(SR 调度)、ratatui(UI)和 clap(CLI)。
安装
# clone this repo
git clone https://gitlab.com/haasal/flashy-rs
cd flashy-rs
cargo run -- help
用法
此项目由 CLI 和 TUI 组成。CLI 用于导入闪卡文件、添加新闪卡并启动 UI。
通过 CLI 添加卡片
cargo run -- new deck --name "my-deck"
cargo run -- new flashcard --deck "my-deck" -q "Question..." -a "Answer..."
cargo run -- new flashcard --deck "my-deck" -q "Question 2..." -a "Answer 2..."
cargo run -- ui --deck "my-deck" # Start the TUI
从配置文件加载牌组
创建文件 my-cards.toml
[[decks]]
name = "Deck 1"
[[decks.cards]]
q = "Question 1"
a = "Answer 1"
[[decks.cards]]
question = "Question 2"
answer = "Answer 2"
[[decks.cards]]
q = "Question 4"
a = "Answer 4"
[[decks]]
name = "Deck 2"
description = "Description 2"
[[decks.cards]]
q = "Question 3"
a = "Answer 3"
将牌组导入数据库
cargo run -- file --import -f "my-deck.toml"
在 Deck 1
中复习卡片
cargo run -- ui --deck "Deck 1"
修改 my-config.toml
并按上述方式重新导入。复习不会被覆盖。
贡献
我很高兴你想贡献!PR 和问题都非常受欢迎。请在开始工作之前创建一个问题,以便事先讨论更改。请查看 CONTRIBUTING.md
获取更多信息。如果您需要灵感,请查看下面的 TODOs ;)
TODOs
杂事/修复
- 更好的日志记录(例如,返回已删除的闪卡等)
- 适当的错误消息而不是原始 SQL 错误
- 在重复问题和 upserts 上记录警告
- 为
file --import
添加删除标志,以便将牌组 1:1 映射到数据库 - 添加测试...
- 使用 此算法 进行间隔重复
- 显示控件的一种更优雅的方式(直接与实际控件耦合或类似)
- 仅显示到期闪卡
- 按到期日期排序闪卡(到期日期在前)
- 减少大量不必要的依赖(主要是由 fsrs-rs 中缺失的功能标志引起的)
- 将数据库移动到预定义的配置文件夹,以便可以在项目目录外运行
- 创建管道(CI/CD)
- 指定开发环境(clippy、格式化等)
- 更好的文档
- 代码清理和重构
- 在说明中添加 GitLab 标志(Crates.io 等)
特性
- 支持 UTF-8 的 Ascii-math
- 更多配置格式
- 使用 markdown 编写/渲染闪卡
- 在 UI 中创建闪卡
- 将可切换的日志窗口集成到 UI 中
- 训练 fsrs-rs 参数
- 从数据库中删除评分
- 将
easy
、hard
等着色 - 插件支持
- 配置选项
依赖项
~66–100MB
~2M SLoC