Slackなどに貼られたAsanaのタスクのURLを開くと、タイムラインやリストなどの画面の上のモーダル画面に本文が出て、描画はあんまり速くなく、本文は画面の右端にしか出てないので、見づらいなと思っていた。
誕生日会プロジェクトにおける、ろうそくを買うタスク、とか、タスクの説明が数行くらいならいいけど、ソフトウェアを作っていたりとか込み入ったことをしていると、どうしても長文を読み書きしたくなることもある。
外部にリンクを貼るときくらいはフルスクリーン版にしておこう、と思って、cocopyでコピーするときに、URLの末尾に/fをつけるようにした。
(page) => { if (page.url.match(/\d$/)) { page.url = page.url + '/f'; } return { html: render('<a href="{{&url}}">{{title}}</a>', page), text: `[${page.title.replace(/\s*[\[\]]\s*/g, ' ')} ${page.url}]`, }; }
AsanaのURL Patternを指定していて、Asanaのタスクをコピーするときにだけ、1, 2がAsana用の変換機能がついたfunctionが出るようにしている。1がHTMLがコピーされるリッチなやつ、2がMarkdown。
Asanaが用意してくれている「タスクのリンクをコピー」ボタンを押したら/fがついてたので、あっこれはcocopyからできるようにすると便利そうだ、と思ったので、やってみた形。
ところで、functionをサイトごとにわけなくても、function内でURLをみて処理をどんどん足していけば、functionをサイトごとに用意する必要ないわけだけど、どうなんでしょうね。
でも、いろんなサイト用の設定を1関数に詰め込んでしまったら、いまのギャラリーみたいに他人に配れないだろうし、やっぱりfunctionは小分けになってるほうがいいのだろうと思う。
だけど、どのサイトのときには、どんなふうに加工する?という関心事と、どんなフォーマットでコピーする?の2つの関心事があるので、リッチなやつ、Markdownがコピーされるやつ、リッチなやつ(Asana用)、Markdownがコピーされるやつ(Asana用)、みたいに、functionがどんどん増えてしまって冗長なようにも感じる。
(page) => { if (page.url.match(/https:\/\/app\.asana\.com\//) && page.url.match(/\d$/)) { page.url = page.url + '/f'; } return { html: render('<a href="{{&url}}">{{title}}</a>', page), text: `[${page.title.replace(/\s*[\[\]]\s*/g, ' ')} ${page.url}]`, }; }