scrapbox-userscript-std
実装したいこと
documentつくる
README.mdに書いたdocumentのURLとcommit idとが常に一致するようにできないだろうか?
2022-03-27 20:16:28 今はrelease前に手動でversionを書き換えている
cursor操作函数を作る
まあこれは気が向いたらでいいや
優先度が低い
getFormula()の実装が古い
.cursor-lineのときの表示をちゃんとやる
previewとテキストの双方を返せるようにする?
正規表現なしでスペースの数を数えられる
文字列処理の強化
欲しい物
任意のDOMに含まれる文字の番号を取得する
オンプレ版scrapboxに対応する
やっぱinstance.patch()みたいなのを作ろうかな
目的:APIを叩く回数を減らす
現状だと、書き込む度にuser idとproject idを取得しに行っている
そんなことはなかった。ちゃんとcacheしてた
ならclassにする必要ないかな?
これらが変わることは普通ないから、一度取得したら保持しておけばいい
interface
こんなのはどうかな?
code:ts
const editor = makeHeadlessEditor();
editor.patch("project", "title", (lines, metadata) => /*...*/); 2022-04-19 19:19:21 いや、普通にclassを使おう
保持する状態が多い
下手に関数にするより、classで書いたほうがやりやすそう
code:ts
export class Headless {
static #pageIds = new Map</${string}/${string}, pageId>(); constructor();
patch();
pin();
unpin();
delete();
*readStream(project: string): AsyncGenerator<>;
*readPage(project: string, title: string): AsyncGenerator<>;
disconnect();
}
disconnect()したら*readStream()などを中断できるようにする;
うーん、デメリットかどうか微妙
patch()のupdaterの引数を変える
Line[]ではなくstring[]を返すようにする
Line[]は第二引数のobjectに入れて、使いたい人だけが使えるようにすればいい
REST APIのwrapper
エラー処理が雑 and 冗長な気がする
あんまり解決策は思いつかない
他のUserScriptでもそうしたい
モチベ
もしかしたらページマージ機能もscrapboxの実装を直接使える可能性が出てきた
takeCursor().page.patchを使えばいけそう?
別にした恩恵が今のところない
むしろ別々にbranch切ってPR出して更新しなければならないので面倒
統合してしまおうかな
バグ
scrapbox.page.linesではなくDOMから文字を取得してしまっている
これでは元の文字を取得できない
修正箇所
REST API
websocket
その他URL
directory layout
./
mod.ts
すべてのコードをここからexportする
utilty関係はここにflatに置く
rest/
REST API系は全部ここ
browser/
browserで動かすやつ
dom/
↓以外
websocket/
各階層にmod.tsを置いてある
あれ入ってたっけ?
editとmotionで分けたつもりだった
ややこしいところあるっぽいから説明詳しくしないとな
2022-02-10
08:05:03 CIを導入した
まだ単体テストを書いていないのでエラーが出ているが、無視する
0.24.2 => 0.24.3
code:mod.ts
code:dom.ts
code:websocket.ts
code:rest.ts
code:text.ts