generated at
タスクリンクV2の実装
コードをhowmとタスクリンクの相性よさそうからこっちに移した
名前は暫定

実装

書式
変更点
締め切り記法 ~ を廃止。代わりに ! を使う
programmable taskを廃止。代わりに繰り返し記号を使う

取り出す情報
タスク名
開始日時
日付 or 日時
Date objectで返す
指定がないときは undefined を返す
default値はparserで決めることではないので省く
(optional)終了日時

2023-09-17
13:33:51 暫定仕様で一旦完成

暫定仕様
記号の挿入位置を決める
開始日時の直前に連結する
[エンジニアの知的生産術買いたい-9@2023-09-12]
[-9@2023-09-12エンジニアの知的生産術買いたい]
[エンジニアの知的生産術買いたい-9 @2023-09-12]
[-9 @2023-09-12エンジニアの知的生産術買いたい]
終了日時/見積もり時間/繰り返し指定
開始日時の直後に連結する
「終了日時 or 見積もり時間→繰り返し指定」の順に連結する
後方互換性
行頭に✅❌があるタスクは完了 . と同義とみなす
コード

なるべく正規表現一発でdetectしたいtakker
リマインダ記号
/([\+\-!~.])(\d+)?/
開始日時
/@(\d{4}-\d{2}-\d{2}(?:T\d{2}:\d{2})?)/
終了日時
/\/((?:(?:(?:\d{4}-)?\d{2}-)?\d{2}(?:T\d{2}:\d{2})?)|\d{2}:\d{2})/
所要時間
/D(\d+)/
見積もり時間とは(何か機能がある)?
所要時間といったほうが正確かもtakker
タスク(予定)に使う時間の長さを指定するtakker
終了日時の代替
相対的に指定したいとき、開始日時なしで長さだけ指定したいときに使う
なるほどはるひ
繰り返し
/R([YMWD])?(\d+)/)/
合体
/(?:([\+\-!~.])(\d+)?)?@(\d{4}-\d{2}-\d{2}(?:T\d{2}:\d{2})?)(?:\/(\d{2}:\d{2}|(?:(?:(?:\d{4}-)?\d{2}-)?\d{2}(?:T\d{2}:\d{2})?))|D(\d+))?(?:R([YMWD])?(\d+))?/i
https://regexr.com/ でマッチするか確認した
test-pattern
+3@2023-04-34 [ごはんを食べる+3@2023-04-34/23D45] [ごはんを食べる+3@2023-04-34/05-23D45] [ごはんを食べる+3@2023-04-34/2023-05-23D45] [ごはんを食べる+3@2023-04-34/2023-05-23T05:67:76D45] [ごはんを食べる+3@2023-04-34/05-23T05:67:76D45] [ごはんを食べる+3@2023-04-34/23T05:67:76D45] [ごはんを食べる+3@2023-04-34/T05:67:76D45] [ごはんを食べる+3@2023-04-34/05:67:76D45] [ごはんを食べる+3@2023-04-34/05:67D45] [ごはんを食べる+3@2023-04-34D45/05:67] [ごはんを食べる+3@2023-04-34D45/05:67R4] [ごはんを食べる+3@2023-04-34D45R4/05:67] [ごはんを食べる+3@2023-04-34D45R47/05:67] [ごはんを食べる+3@2023-04-34D45R/05:67] [ごはんを食べる+3@2023-04-34D45RM8/05:67] [ごはんを食べる+3@2023-04-34D45RY8/05:67] [ごはんを食べる+3@2023-04-34D45RW8/05:67] [ごはんを食べる+3@2023-04-34D45RD8/05:67] [ごはんを食べる+3@2023-04-34/05-34RD8/05:67] [!@2002-10-20 ハイウェイ惑星 〆切] [ハイウェイ惑星 〆切!4@2002-10-20] [-@2002-10-20 ハイウェイ惑星 買おう] [ハイウェイ惑星 買おうかな~@2023-09-12] [ハイウェイ惑星+@2002-10-20 買おう] [読書会@2023-04-11T13:00] Edit the Expression & Text to see matches. Roll over matches or the expression for details. PCRE & JavaScript flavors of RegEx are supported. Validate your expression with Tests mode. The side bar includes a Cheatsheet, full Reference, and Help. You can also Save & Share with the Community and view patterns you create or favorite in My Patterns. Explore results with the Tools below. Replace & List output custom results. Details lists capture groups. Explain describes your expression in plain English.

後で実装するもの
いろんなパターンを一度に実装するのはつらいtakker
高度な日付指定
曜日指定
/(\d{4}-\d{2}-\d{2}(?:T\d{2}:\d{2})?)(?:\((\+|-)?(\d+)\*(Sun|Mon|Tue|Wed|Thu|Fri|Sat)(?:(\+|-)(\d+))?\))?/ で認識
yyyy-MM-00で月末
記号の順序を順不同にする or フォーマットを正式に決める
順不同が好ましいが、誤判定する恐れがあるtakker

補助CSS
リンクの先頭にタスクの種類を絵文字で表示する
完了したタスクに✅をつける
style.css
.page-link[href*=".@"]::before{ content: "✅" }
終わっていないタスクに⬜をつける
css
.page-link[href*="@20"]::before{ content: "⬜" }
誤判定の可能性もあるが、とりあえず我慢する

悩み
未来の繰り返しタスクをずらしたいときどうするか
例:毎日08:00に家を出るが、来週の月水だけ07:00にしたい
実装方法
繰り返しタスクのページ内に、例外設定を記入する
cons: 例外設定が膨大になる?