昨年末に元クロコスメンバーが集まった忘年会の時に「esa.io の Markdown ヘルパーが便利でさ」という話を力説していたら、「じゃあ、それ Crowi に付けてよ」と言われて、頑張って pull request を作った。
その時は、esa.io の Markdown ヘルパーを Chrome 拡張化した「esarea」のソースコードをパクって参考にして書いたのであった。
と、ここまでが前提。
そんな経緯もあって、今度は「もう少しヘルパーを拡張したい部分があるんだけど作ってよ」的な話を振られて、ひさしぶりの Crowi 活動を行なった。
これで何をしているかというと、次のような動きになる。
-
などの Markdown のマークアップ記号がある-
なら全ての行がリストとして入力されるここを読むより、pull request 内の GIF アニメを見てもらうと、挙動が把握しやすいと思うけど。
動作としては、Clipboard API and events を使って、paste
イベントの発火で処理をフックしている。ペースト位置の行を取得して、その行頭の文字を調査、規定の文字だったら、ペーストするテキスト内の改行位置にその行頭文字を加える、というような流れ。
「ペースト位置の行を取得」という処理は esaera から移植した時に作ったものをそのまま利用している。
ちなみに Mac の Chrome, Safari, Firefox では試したけど、他のブラウザでは試してないので、動かないブラウザもあるかも知れない。
最近は JavaScript をあまり書いてなかったので、これ書いてて楽しかった。