Counta検討1
ローカルからのコピペ at 2022/12/17
用語
workspace
@countaの行を持つ.scbがこれになる
counter
xxxx.scb各々のこと。トピックと同義。
routine counter
@1や@per1や@sunなどがついているカウンター
ルーチンタスクを表現し、毎日該当日
event counter
@2022/12/08など@yyyy/mm/ddがついているカウンター
category
counterにタグをつけるもの
code:category_家事.scb
@counta category 家事・雑務
:c
この場合、5つのcounterは家事・雑務タグがついたにも等しい
workspace上での日々の操作 案2
やっぱり直に並べたい
インデントとかはなしにしたい
code:workspace1.scb
@counta workspace
:c
code:workspace1_filter1.scb
@counta workspace date_modified <300
:c
code:workspace1_filter2.scb
@counta workspace date_modified routines_today
:c
で、各々にアクセスするステーションは各自適当につくれ
code:scb
filter
:c
とするとカウンタ全部を列挙したソースが要る🐰
@counta workspace
このファイル自体がソースになる
ソースはフィルタリングなしの all になる
@counta workspace from=workspace1
どのソースを使うかを書くとこう
fromを使う
表記も統一してしまうか
🔴@counta workspace
❌@counta workspace filter=routine
ソースはフィルタリングできない
🔴@counta workspace sort=most_counted
ソースはソートはできる
❌@counta workspace from=workspace1
ソータリングの指定が要る
🔴@counta workspace from=workspace1 sort=date_modified
🔴@counta workspace from=workspace1 filter=routine
🔴@counta workspace from=workspace1 sort=date_modified filter=routine
先頭が@countaでなければいいのでコメントアウトもできる
code:コメントアウトの例.scb
@counta workspace sort=date_modified
@counta workspace sort=most_counted
@counta workspace sort=most_commented
:c
使いたいものをスペース外してから実行すればいい🐰
fromはリンクで書かせた方がいいかも。明示的になるし
@counta workspace from=workspace1 sort=date_modified 処理の流れ
1 counters.scbを開く
2 カウンターを書いていく
[洗濯]65 [床掃除]44 [窓掃除]8 [買い物]109 [シャッフル]13 [dobu開発]24 [counta開発]2
3 書く
[洗xx濯]65 [床xx掃除]44 [xx窓掃除]8 [買い物]109 [シャxxッフル]13/冬は体調管理がきついかもなー [dobu開発]24 [counta開発]2
4 処理
countelementをつくる。現在日時
counters.scb を全部解釈して、counter name, counted? comment? and comment を全部まとめる
各カウンターのページを見に行く
なければつくる
@counta counterがなければappend
同上、今回のcountelementを追加
同上、カウンターの各種情報を計算
counters.scb に反映
各カウンターを観点に応じてソートして、
counters.scb の xx とコメントは全部取り除いて、
でもカウント数は反映する
--- special files
counta_tags.scb
使われているタグの一覧
workspaceごとに表示する
[tag1]みたいにリンクを使うこともできる
内部的には[tag1]というタグ名、という認識でしかないので
ただし[tag name]みたいにスペースが入ると、[tagとname]に分かれてしまう
code:counta_tags.scb
xxx
yyy
...
:c
--- directive
概要
workspace or counter はどちらかを必ず書く
workspace の場合、他に書けるものはない
counter の場合、さらにroutineやeventも書ける
routineとeventは混ぜてもいい(eventがあるけど、当日までルーチンで処理したいなどもありえる)
directiveはトップレベルで書く
レベルを下げると無効
よってコメントアウト的に運用することもできる
workspace directive
@counta workspace|w
no input and output。下には何もぶら下げない。
use parameter
code:aaa
@counta workspace
:c
code:aaa
@counta workspace from=workspace2 sort=most_counted :c
---
sort=date_modified が補われる
@counta workspace
ソースはフィルタリングできない
❌@counta workspace filter=routine
ソースはソートはできる
@counta workspace sort=most_counted
ソータリングの指定が要る
❌@counta workspace from=workspace1
sortとfilterで絞り込む
@counta workspace from=workspace1 sort=date_modified
@counta workspace from=workspace1 filter=routine
@counta workspace from=workspace1 sort=date_modified filter=routine
tagでも絞り込める。複数指定時はAND
@counta workspace from=workspace1 tag=tagname1
@counta workspace from=workspace1 tag=tagname1 tag=tagname2
@counta workspace from=workspace1 filter=routine tag=tagname1 tag=tagname2
counter directive
@counta counter|c
output。カウントが行われるとぶら下がっていく。
code:aaa
@counta counter
yyyy/mm/dd hh:mm:ss dow comment
yyyy/mm/dd hh:mm:ss dow comment
...
:c
@counta routine|r
input and output。間隔はinput(自分で指定)、latest stackは指定もできるし自動反映もされる。
code:aaa
@counta routine
@3
yyyy/mm/dd
yyyy/mm/dd
yyyy/mm/dd
:c
@counta event|e
input。自分で指定。
code:aaa
@counta event
yyyy/mm/dd
yyyy/mm/dd
...
:c
@counta tag|t
no input and output
use parameter
code:aaa
@counta category タグ名1 タグ名2
:c
--- classes
Workspace
counters: Counter[]
Counter
count_elements: CountElement[]
category: string
@category
@count
get_latest_datetime()
get_oldest_datetime()
CountElement
datetime: string
comment: string
ConditionalCounter(Counter)
super
is_matched()
RoutineCounter(ConditionalCounter)
super
routine_specifier: string
latest_stack: LatestStack
EventCounter(ConditionalCounter)
super
target_days: string[]