@takker/cosense-srs
(vaporware)cosense(scrapbox)でspaced repetitionするUserScript
https://github.com/takker99/cosense-srs
motivation
scrapbox2ankiを使いたくなくなってきた
mediaをapkgに入れるのがうまくいっていない
deno-ankiを最新のapkgに合わせればなんとかなるが、大変時間がかかっている
これいじょうやりたくない
そんななか、FSRSを発見した
すでにalgorithmがts-fsrsとして公開されているので、あとはUIとデータ管理さえ実装すれば、AnkiなしにSRSを組める
ということで作りたくなった
特徴
Ankiなしで使える
端末非依存
UI
Ankiの解答画面のようなmodalを作る
scrapboxの編集画面をそのまま使う
問題が記載されている箇所に直接移動する
画面下部あたりにEasy,Hard,などを選ばせるボタンを表示する
メリット
UIを新しく作る必要がなくなる
ボタンを用意するだけでいい
問題の前後の解説や文脈を参照できる
設計
問題作成
とりあえずしばらくはscrapbox2ankiと同じsyntaxを使う
いずれObsidian Spaced Repetitionなどを参考に、より書きやすいsyntaxを作りたい
穴埋めonlyにする
syntax
Anki style{{c\d+::[^}]+}}を使う
scrapbox記法との兼ね合いが難しい
特定の記法内外に{{...}}が含まれていれば問題ない
記法をまたぐとき問題になる
{{...}}を解析してからscrapbox記法をparseすると、一部の記法が壊れる可能性がある
scrapbox記法をparseしてからだと、objectが複雑な階層構造になるため、{{と}}のペアを探し出すのが難しくなる
記法を解析するとき穴埋め問題作成も同時にやってみる?
例えばc1をcloze deletionにするときは、c2以降の{{c\d+::([^}]+)}}を$1に置換し、c1を{{c1::CLOZE}}に置換する
次にscrapbox記法をparseしてHTMLに変換する
最後に{{c1::CLOZE}}をcloze deletionのHTMLに変換する
文字装飾記法を使う
例えば、/customize/Scrapboxで暗記シートを作る (CSSだけ使ったバージョン)は[! ]でcloze deletionを作っている
scrapbox記法とは衝突しなくなる
scrapboxの編集画面をそのまま解答画面に流用できる
UIの項目参照
数式記法、の中、コードブロック記法の中にcloze deletionを置けなくなる
数式記法は文字装飾記法で囲めるので、数式を穴埋めにすることはできる
数式の一部を穴埋めにするのは、簡単な数式でないと困難
やコードブロック記法は穴埋めにできない
card収集
scrapbox2ankiと同じ方法を用いる
更新時は以下のどちらかを使う
api/pages/:projectnameを叩き、更新されたページだけ巡回してcardを更新する
開いたページのapi/pages/:projectname/:pagetitleのrelatedPagesから、関連ページリストの中で更新されたページだけ列挙し、それらのページを巡回して更新する
#2024-09-28 07:07:49
#2024-09-25 16:22:50