todarosのmdファイルパース
1 机上
code:py
today_day # 3
today_dow_shortname # wed
today_dow_longname # wednesday
for filename in filenames:
b = get_basename(filename)
if b == '@1':
add_from('@1.md')
continue
mod2 = today_day % 2
target_filename = '@2_{}.md'.format(per2_tablemod2) add_from(target_filename)
continue
# DRY……はまだ2つだし、いったんいいか
mod3 = today_day % 3
target_filename = '@3_{}.md'.format(per3_tablemod3) add_from(target_filename)
continue
if len(b)>6 and b-6:=='day.md': # 曜日系のファイルは -day.md で終わるので、これを曜日系ファイル判定として使っている
maybe_dow_longname = b
add_from('{}.md'.format(today_dow_longname))
continue
if today_day == int(b):
day = b
add_from('{}.md'.format(b))
continue
こんな感じでファイルごとに当てはまるかどうか見ていくイメージ
2 軽く実装してワンパス通した
code:py
def pickup_corresponded_filenames(filenames):
today_day = get_today_day()
today_dow_longname = get_today_dow_longname()
mod2 = today_day % 2
target_basename_of_per2 = '@2_{}'.format(per2_tablemod2) mod3 = today_day % 3
target_basename_of_per3 = '@3_{}'.format(per3_tablemod3) outnames = []
for filename in filenames:
basename = get_basename(filename)
b = basename
if b == '@1':
outnames.append(filename)
continue
if b == target_basename_of_per2:
outnames.append(filename)
continue
if b == target_basename_of_per3:
outnames.append(filename)
continue
if b==today_dow_longname:
outnames.append(filename)
continue
if b.isnumeric() and today_day==int(b):
day = b
outnames.append(filename)
continue
return outnames
1と比べて反省点
つまらんミス
code:py
3が正しい
総じてまとめると「一致を調べたいファイル名は先につくっておけ」
曜日判定は遠回りな実装してた
@2と@3は遠回りだし普通にバグだった