#flashcards #tui #spaced-repetition #anki #json-toml

bin+lib flashy

一个用于编写和使用闪卡的用户界面

2 个不稳定版本

0.1.0 2024 年 8 月 13 日
0.0.1 2024 年 7 月 30 日

#629命令行界面

Download history 108/week @ 2024-07-29 125/week @ 2024-08-12

每月 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 参数
  • 从数据库中删除评分
  • easyhard 等着色
  • 插件支持
  • 配置选项

依赖项

~66–100MB
~2M SLoC