✅todarosでタスクの並び順を制御したい
やっぱり欲しい
けど、以下は微妙
手動でセクションprefix考えて泥臭くつけていく + セクションprefixあればそのとおりに表示順序変える、しかないか?
ジレンマだな
多すぎると覚えきれない or 制御する機構が煩雑になる
少なすぎると制御できない(今はここ)
朝昼夜の3セクションでいける?
欲しいのは
朝やるもの
風呂の前後にやるもの
が、今は@1 @2 @3の順番で上に来るsta.icon
数字prefixは?
@1~@9
が、頻度とかぶる
先頭1文字に数字があることを想定する
code:bf.md
@1 L1 calendarチェック/昨日の日次レビュー/home.tritaを見て、今日やるタスクがあればdaily.mdに転記する
@1 薬飲んで着替える
@1 L2 dry to kakeibo、inboxメモ、Scrapbox更新/statusallからのpush
@1 ブクマの@1モニタリング
@1 ブクマの@1日記
@1 風呂入って、
@1 ブクマの@1 風呂入った後
code:af.md
1 @1 L1 calendarチェック/昨日の日次レビュー/home.tritaを見て、今日やるタスクがあればdaily.mdに転記する
1 @1 薬飲んで着替える
3 @1 L2 dry to kakeibo、inboxメモ、Scrapbox更新/statusallからのpush
3 @1 ブクマの@1モニタリング
3 @1 ブクマの@1日記
4 @1 風呂入って、
4 @1 ブクマの@1 風呂入った後
朝を1、風呂の前を3、風呂の後を4にしてみた例
2は休日とかにやる「朝一の後」用
うん、いけそうだな
実装
今
だいぶ作り変える必要がある
こうか
1: とりあえず全部読み込んで行マージ
2: 1をsort asc
が、これだと@1.mdとかに書いてる順番が乱れちゃう
ソートはダメそう
先頭に1 を含む行を抽出
先頭に2 を含む行を抽出
……
こんな感じで泥臭くピックアップしていかないといけない
汎化できそう
1: ルーチングループをつくる
bf
@1.md
af
(prefix='@1', filename='@1.md')
「このファイル名は、各行を読み込んだときに、各行にprefixをつけます」の意味
2: 1にしたがってすべての行を読み込む&マージする
3: 2から指定条件を満たす行を抽出するレイヤー
先頭に1 を含む行
先頭に2 を含む行
……
抽出されなかった行たち
4: 3をマージする
3でn個の「抽出グループ」がある
4では、こいつらをお望みの順番でマージする
寝かせる at 2021/09/26 09:38:15
いこう
こんな感じ?
code:py
def reconstruction_tasklines_with_extract_merge(lines):
# extract and merge
# 指定観点で抽出(extact)した部分リストをつくったあと、
# それらを指定順序で併合(merge)することで
# 意図した並びのリストをつくる手法.
outlines = []
extractee = copy.deepcopy(lines)
prefix_extracters = [
'0 ',
'1 ',
'2 ',
'3 ',
'4 ',
'5 ',
'6 ',
'7 ',
'8 ',
'9 ',
]
for prefix_extracter in prefix_extracters:
extracted_lines = []
for line in extractee:
not_included = not line.startswith(prefix_extracter)
if not_included:
continue
extracted_lines.append(line)
outlines.extend(extracted_lines)
for extracted_line in extracted_lines:
extractee.remove(extracted_line)
# 最後に「抽出されなかった行たち」を merge する必要がある。
# これを行いたいがために、上記処理では extractee を破壊的に remove していっている。
not_extracted_lines = extractee
outlines.extend(not_extracted_lines)
return outlines
いや、前段階でもチューニング必要だったわ
code:py
def file2list_from_routinegroups(routinegroups):
''' @params routinegroups routinegroupのリスト '''
result_outlines = []
for routinegroup in routinegroups:
prefix, filename = routinegroup
outlines = file2list(filename)
# prefix だと次の reconstruction で上手くいかない
# こうしたいのに
# 1 @1 毎日やりたいタスク1
# 1 @1 毎日やりたいタスク2
# こうなってしまう、
# @1 1 毎日やりたいタスク1
# @1 1 毎日やりたいタスク2
#
# 前者の実装は文字列操作がしんどいので、以下のようにする ★こうした
# 1 毎日やりたいタスク1 @1
# 1 毎日やりたいタスク2 @1
suffix = prefix
#outlines = {}'.format(prefix, line) for line in outlines outlines = {}'.format(line, suffix) for line in outlines
result_outlines.extend(outlines)
return result_outlines
実装done
しばらく使い込んでみる at 2021/09/26 12:33:24
リリースしてます at 2021/10/07 20:59:51