タスクリンクV2の実装
タスクリンクV2の実装
コードをhowmとタスクリンクの相性よさそうからこっちに移した
名前は暫定
実装
タスクリンクのパーサーに、howmのリマインダの記号を読む機能をつける
書式
howmとタスクリンクの相性よさそうを参照
変更点
締め切り記法~を廃止。代わりに!を使う
programmable taskを廃止。代わりに繰り返し記号を使う
取り出す情報
タスクの状態を表す絵文字
タスク名
開始日時
日付 or 日時
Date objectで返す
howmのリマインダの記号の種類&数値
指定がないときはundefinedを返す
default値はparserで決めることではないので省く
(optional)終了日時
2023-09-17
13:33:51 暫定仕様で一旦完成
https://github.com/takker99/takker-scheduler/pull/127
暫定仕様
記号の挿入位置を決める
howmのリマインダの記号
開始日時の直前に連結する
✅[エンジニアの知的生産術買いたい-9@2023-09-12]
✅[-9@2023-09-12エンジニアの知的生産術買いたい]
❌[エンジニアの知的生産術買いたい-9 @2023-09-12]
❌[-9 @2023-09-12エンジニアの知的生産術買いたい]
終了日時/見積もり時間/繰り返し指定
開始日時の直後に連結する
「終了日時 or 見積もり時間→繰り返し指定」の順に連結する
後方互換性
行頭に✅❌があるタスクは完了.と同義とみなす
コード
https://github.com/takker99/takker-scheduler/blob/0.9.2/workflow/parse.ts に移した
なるべく正規表現一発でdetectしたいtakker.icon
リマインダ記号
/([\+\-!~.])(\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.icon
タスク(予定)に使う時間の長さを指定するtakker.icon
終了日時の代替
相対的に指定したいとき、開始日時なしで長さだけ指定したいときに使う
なるほどはるひ.icon
繰り返し
/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
regexper
https://regexr.com/ でマッチするか確認した
code: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.icon
高度な日付指定
曜日指定
/(\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.icon
補助CSS
リンクの先頭にタスクの種類を絵文字で表示する
完了したタスクに✅をつける
code:style.css
.page-linkhref*=".@"::before{
content: "✅"
}
終わっていないタスクに⬜をつける
code:css
.page-linkhref*="@20"::before{
content: "⬜"
}
誤判定の可能性もあるが、とりあえず我慢する
悩み
未来の繰り返しタスクをずらしたいときどうするか
例:毎日08:00に家を出るが、来週の月水だけ07:00にしたい
実装方法
繰り返しタスクのページ内に、例外設定を記入する
cons: 例外設定が膨大になる?