画像パス(IMAGEPATH)
環境変数PATHの画像ファイル版みたいなもので、
「共通画像ファイル置き場のパス」をn個格納したもの
ある画像ファイル名が与えられたとき、その在り処を探す先
例
code:scb
aaa
aaa
例
N6mCG7efET4h.png
code:imagepath
d:\data\images
d:\work\github\stakiran\imagepath
d:\projects\projectA\images
このとき、N6mCG7efET4h.pngとして以下が探索される
code:aaa
d:\data\images\N6mCG7efET4h.png
d:\work\github\stakiran\imagepath\N6mCG7efET4h.png
d:\projects\projectA\images\N6mCG7efET4h.png
こうすると、
テキスト世界に画像を持ち込むことができる
テキスト世界では画像ファイル名だけ記載すればいい
画像を見たいときは「テキスト世界の機能を使って」「その画像ファイル名を取得し」かつ「imagepathを解釈して画像ファイルを探して見つかったらそれを開くプログラムを呼び出せ」ばいい
「カレントディレクトリを基準とした探索」もしたいよね
これがあるとmarkdown local repo全般でも画像ファイルを開ける
./images/aaa.jpg みたいなパスになってるはずなので
なんてことはない、プログラムやモジュールの実体を探すサーチパスのアルゴリズムを、画像にも当てはめてるだけやsta.icon
待てよー……
IMAGEPATHという環境変数用意するつもりだったんだけど、別にPATH拝借すればよくね?sta.icon*2
PATHにパスが20個くらいあって、そこに画像用パスを数個足したところで誤差でしょ?たぶん。
間違ってヒットすることもないでしょ
PATHを使うだけならwhereやwhichコマンドで調べる、とかも聞くだろうし
でもPATHってターミナルの再起動必要だったりしてだるいだろ
imagepathは動的に反映されるべきだ。ただ画像開くだけなんだから。プログラム動かすわけじゃねえんだからsta.icon*2
プログラムの場合、aaa.exeというファイルが突然not foundになったり、別のpathが通って別のaaa.exeが立ち上がったりしたら危ない(悪用される)から、動的反映はダメだけど。
そういう意味では、pathとは分けて考えるべきか?
うん、分けますsta.icon
❌実装案: imagepath
環境変数IMAGEPATH
従来のセミコロン区切りやコロン区切りはだるいんだよなー
上手い方法ない?
IMAGEPATHを読み込んで、与えられた画像ファイル名をそれで補完して探しつつ、見つかったら関連付けられたプログラムでその画像を開くプログラム
頑張ればバッチファイルでも書けそうだがsta.icon
いや、動的に反映したいのに環境変数使うってのが間違いやろ
❌実装案: IMAGEPATH_XXX
IMAGEPATH_XXXにはパス一つだけ書く
変わりにこの変数をn個定義できる
環境変数全部サーチってできるんだっけ?
裏でimagepath_aaaを追加したとき、プログラム側でも自動反映されるか?
されないよねぇ……sta.icon
環境変数だし
環境変数ってプログラムが起動されるときに一気に渡される静的コピーなんだよ
あれ?じゃあos.environで読み直せばいける?
どっちだっけ?
os.environって「自身に渡された静的コピー」から読み込む?
こっちだよな?sta.icon
うん、こっちやsta.icon*2
それとも毎回システムの環境変数見に行くんだっけ?
し、「すでに読み込まれた環境変数名は新たに読み込まないが、まだ読まれてない名前は読み込む」みたいなややこしい挙動するはずもないし
どっちや
%userprofile%\.imagepathみたいなファイルをつくる
ここにパスを並べる
imagepatherはここから毎回パスを読み込む
まあその辺のツールがよくやってる形式
これでいいか?sta.icon
他に浮かばん。これでええね。
実装案: imagepatherのカレントディレクトリの設定ファイル
一番単純
-.icon
実装
imagepather.py
--imagefile-path xxx
xxxをimagepath解決してから開く
--from-clipboard
クリップボード上のデータを画像ファイル名とみなす
--dryrun
実際に開きはしない。stdoutに成否とか情報とか出す
--edit
.imagepathを開く
何を使って?sta.icon
使うエディタも.imagepath自体に書いておく必要がある
あるいはEDITOR環境変数を見るとか
--list
cat .imagepath
サーチ
%home%/.imagepath
このファイルがない場合は新規する
あー、でも、どうせならGUIにしたいなぁ
何も起きなければバックグラウンドで動作して、何かおきたらGUI出す。