2023/03/01
scrapbox-userscript-std/PR:108
merge済み
from @Mijinko_SD
(nit) convert named functions to arrow functions
折角なのでテストを加えたい
getCodeBlocks
最後のreturnでArray.prototype.filter()を使うほうが合理的
updateCodeBlock
...
makeTitleChangeCommit
isCodeFile
unknown
ではなく、いくらか型を絞ってしまってもいいのでは? それはupdateCodeBlock()のnewCodeの
unknownにしたのは他でも使えるようにするためだけなので、ぶっちゃけ不要です
これによる型判別を使用せずに、updateCodeBlock()の引数を
newCode: {content: string | string[]} | CodeFile
にするという手もある これだと関数内で
newCode
を使うのが楽になる反面、呼び出し方が若干複雑になるというデメリットもある どちらが良いかわからなかった
flatCodeBodies
makeCommits
makeIndent
makeCodeBlockTitle
テストコードの書き方(というかそもそもテストで何をするのか)がよくわからなかったので、多分人任せになるかもしれません…
初めて書いたので、良くない点や間違っている点があるかもしれません
あれば教えていただけると幸いです
WebSocketの通信を挟む関数や、exportしていない関数のテストコードの書き方はわからなかったので、まだ書いていません
scrapbox.io serverの挙動を全部emulateしなきゃいけないのでやりたくない……
fetchだけならscrapbox-userscript-icon-suggestionでいくつか実装例がありますが……やりたくなさすぎて放置している……
isSimpleCodeFile.ts
に分離したほうがいいと思う pull()
は getPage()
をちょこっとwrapしただけ。そもそも必要性があやしい 組み込み型定義の違いでdirectoryを分けたいので、
/rest
に置くのが適切 /rest
はどの環境でも使えるファイルを置いている /websocket
はbrowser環境でしか動かせないので、ここに getCodeBlocks
を入れると、不要な制約がかかってしまう ちなみに
/dom
と /websocket
を分けているのは、importの副作用による不要なコードが混入するのを防ぐため /websocket
をimportに含めるとscrapbox-parserのコードが含まれてしまう これは
/dom
だけ使うなら不要 PRにcommitできるのはauthorだけ?
うまいこと複数人が直接commitできるbranchを生やせばいいのかな?
browser/dom/extractCodeFiles.ts
の CodeFile
と名前がぶつかってしまっている 思いつかない……………
SimpleCodeFile
へ変更した 自分も混乱してきました
でもあんまり長い名前は入れたくないんですよね
namespace (TypeScript)を導入するしかないかな?
もちろん、長いより短いに越したことはありませんが
メジャーバージョンアップ(互換性切り)の機運…?
デバッグ文に色(limegreen)をつけた
local_test/fmt-watch.ps1
$files = @(
"./local_test/test.ts"
"./local_test/getCodeBlocks.test.ts"
"./browser/websocket/mod.ts"
"./browser/websocket/updateCodeBlock.ts"
"./browser/websocket/updateCodeFile.ts"
"./browser/websocket/updateCodeFile.test.ts"
"./browser/websocket/isSimpleCodeFile.ts"
"./browser/websocket/isSimpleCodeFile.test.ts"
"./browser/websocket/_codeBlock.ts"
"./browser/websocket/_codeBlock.test.ts"
"./rest/mod.ts"
"./rest/getCodeBlocks.ts"
"./rest/getCodeBlocks.test.ts"
) | ForEach-Object {$PSScriptRoot + "/../" + $PSItem}
deno fmt --watch $files
deno.jsonにいくつかコマンドを定義しようかな
deno task <なんとか>
で実行できるようになる2023-02-26
mergeせずに放置する理由がない
reviewはまだできてないけど、このままreviewするまでmergeしないとかしていると、永久にmergeされない
たぶん動いているだろうし、mergeしちゃっても大丈夫だと思う
一応deno testだけはやっとく
2023-02-17 14:23:49 必要になったので先に#109をmergeします。すみません
getCodeBlocks()でコードブロックを取得する際、タイトル行の行IDで絞り込めるようにしました
ついでにフィルター周りのコードを少し簡略化しました
挙動は変えずに内部処理だけ変更した
deno fmtを度々やり忘れてしまっていてすみません
プッシュ前に
deno fmt
を入力するように心がけます$ deno fmt
VSCodeに常時Denoでフォーマットする設定を入れたので不要
{
// 中略
"settings": {
"deno.enable": true,
"editor.defaultFormatter": "denoland.vscode-deno",
"editor.formatOnSave": true
}
}
$ deno test --allow-read
テストファイルやテスト対象に異常があればここでエラーが出る
$ wsl deno check --reload ./**/*.ts
2023/03/01
--reload
を含めて更新するようにしないとpush後にエラーを吐いた scrapbox-parser周りかesm.sh関係のエラーだと思われ
pre-commitを使うと自動化できるかも?
提案しておいてなんですが、自分も一度も使ったことないです……
名前だけ知ってる
今度試しに使ってみようかな