Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

コードブロックの取得、および上書きを行う関数の追加 #108

Merged
merged 40 commits into from
Mar 24, 2023

Conversation

MijinkoSD
Copy link
Contributor

以下は新しく作成したファイルの詳細です。
全てbrowser/websocket/以下に配置してあります。

getCodeBlocks.ts -> getCodeBlocks()

指定したページ内(または予め取得しておいたBaseLine配列内)の中に存在するコードブロックを全て個別に返します。
この個別というのは、ファイル名ごとではなく、コードブロックの塊ごとに返すという意味です。

類似の関数として../dom/extractCodeFiles.tsが存在しますが、以下の理由により使用していません。

  • 開いていないページ(scrapbox.Page.linesを取得できない状態にあるページ)で使用するのが困難
  • コードブロックの塊ごとに取得できないと、後述のupdateCodeBlock()で使用するのが難しい

内部的にはREST APIを叩いているだけなので、websocket/に配置するのは不適切かもしれませんが、そのAPIを叩く際に使用しているpull()がwebsocket/以下にあったため合わせる形で同じ場所に配置しました。
問題があれば、場所を移動させてください。

updateCodeFile.ts -> updateCodeFile()

プロジェクト名・ページ名・上書きするファイル情報の3つを渡せば、ページ内の同じファイル名のコードブロックを全て書き換える関数です。
api/code/:projectname/:pagetitle/:filenameで取得できるコードの中身を任意の文章で置き換えたい時に使えます。

同じファイル名のコードブロックが同じページに複数存在した場合も、REST APIで取得できるコードが指定した文章になるように、それぞれのコードブロックに文章をちりばめる形で上書きします。
diff()を使用しているため、差分量が少なければ変な形で文章が分散するのは減ると思われますが、見た目重視の分散をしているわけではないため、コードブロックが複数ある状態で実行するのはあまり推奨できないと思います。

updateCodeBlock.ts -> updateCodeBlock()

getCodeBlocks()で取得したコードブロックの情報を元に、特定の1つのコードブロックを書き換える関数です。

_codeBlock.ts

updateCodeFile.tsupdateCodeBlock.tsの双方で使用し、かつ外部へexportしたくない関数をまとめてあります。

@takker99
Copy link
Owner

PRありがとうございます!
後ほど気になった点などを/villagepump/@Mijinko_SDで書かせていただこうと思います
(今日はもう井戸端に行けないので後で)

このPR上でコメントしたほうがいいのかな🤔 わからん

@MijinkoSD
Copy link
Contributor Author

質問や意見などは遠慮なくどうぞ!
書き込み先は書きやすい方で大丈夫だと思います(Scrapboxに書いた場合は、このページを見に来た人が顛末を把握できるように、後日ここに該当ページへのリンクを貼ると思います)

@MijinkoSD
Copy link
Contributor Author

上げ忘れたコミットを上げたらCodeFileでconflictした…
明日以降直します。すいません

@MijinkoSD
Copy link
Contributor Author

MijinkoSD commented Feb 16, 2023

getCodeBlocks.tsの場所を移動しました

getCodeBlocks/restでいいと思いますtakker

@MijinkoSD
Copy link
Contributor Author

CodeFileが被っていたのでSimpleCodeFileへ変更しました。

@MijinkoSD
Copy link
Contributor Author

以下の対応を行いました。

isSimpleCodeFile.tsに分離したほうがいいと思う

@takker99
Copy link
Owner

このbranchって、自分のほうでもlocalで試せるんですかね?
git fetchとか駆使すればlocalに落とせるかな?

近いうちに調べます

@MijinkoSD
Copy link
Contributor Author

MijinkoSD commented Feb 25, 2023

どこまで求めているかにもよりますが、試すだけでしたらgit clone https://github.com/MijinkoSD/scrapbox-userscript-std.gitでローカルに落とすことでも出来るかと存じます。

一応リポジトリが違う扱いになっていた気がするので、git fetchはできないかも?

@MijinkoSD
Copy link
Contributor Author

ジェネレーター以外のfunctionをアロー関数に直しました

@takker99
Copy link
Owner

ありがとうございます。mergeします

@takker99 takker99 merged commit 45d200f into takker99:main Mar 24, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants