html片を書いてUnix的GUIツールを作る為のツール。 htmlnixは先人が居たのでhtmnixで。
htmnix/test at main · karino2/htmnixのファイルに対して、
$ cat test/test.html | htmnix
とする。あとはtest.htmlの中を見て、以下の説明を見ればだいたい分かると思う。
htmnixコマンドの標準入力にhtml片を渡すと、それが表示される。
hn-
で始まる特殊なクラスをつけると、特別な振る舞いをする。
html片はbulmaでスタイル付け出来る。
jsは書かない。htmlとcssだけ。
例えば以下のようなcssクラスをつけると、それっぽく振る舞うjsのハンドラが勝手にぶら下がる。
hn-submit
submitボタンhn-cancel
キャンセルボタンhn-mul-sel
マルチセレクション、このクラスたついたものは複数選択されて、結果はhn-value
attributeに書いてある値が出力される(1行1hn-value
で)まずはこれだけ。てきすとでっきの古くなったメモをアーカイブ用テキストファイルに移すGUIツールを作るのに使う機能から始める。
pythonとかgolangでhtml片を生成する部分とこのhtmnixでGUIを表示する部分に分ければいろんなUnix的GUIツールがスクリプトで書けるようになるんじゃないか。
あっさり出来た。なかなか簡単につくれたので筋の良さを感じる。
なかなか良いが、これは汎用にすべきなのかブロック選択専用にすべきかは良く分からないな。 ブロック選択専用とすれば現状は非常に完成度が高いが、名前もそういう名前にすべきだよな。
まぁ他に用途が出てきた後に考えよう。出てこなかったら名前は失敗だったという事で。
htmlの生成を外に押し出したのは機能の分割の仕方として優れている気がする。作りやすい。
現状のhtmnixは、
hn-mul-sel
などのクラスを含んだhtmlを生成するのはユーザーになる。
一方でhn-mul-sel
などが何を意味するのかはhtmnixが決めている。
これを外に出せないものか?
この振る舞いに依存するのは以下の2行だけだ。
この2行を外で指定するようになれば、htmnixは汎用な解決策となる。
この2行は何かと言えば、
である。
もちろんこれらをjsで外で書くようにすれば書けるのだが…
jsでは無くいい感じに安全で簡潔に必要な事を指定する方法は無いものか。
そんなにたくさんの種類は必要無いだろうから当初予定通りにcssのクラスを幾つか定義すればいいのかもしれないが、 これを外に出す事が出来ればhtmnixはいじる必要がなくなるので完成する。 なんか機能を外に出して(減らして)完成するって本質的に正しい気がするんだよなぁ。
JSは汎用過ぎるので、もうちょっと制約された何かが良いとは思う。
必要な事はユーザーのアクションに対し、何らかのロジックでcssのクラスを変更する処理と、 終了時にxpathのようなクエリ式とそのグループ参照で組み立てる出力文の生成の2つに思う。
例えばフィルタのような物を作るなら、テキストボックスのonKeyDownで対応するリストのクラスを部分一致が偽なら追加するような記述になりそう。 よそのクラスを参照出来るようにすべきかは微妙だが、 なんにせよ少しダイナミックなスタイル指定でやりたい事はだいたい出来そう。
こういうのは実際に使うケースが無い状態で作ってもろくな物にはならないので、 しばらくいろいろな目的用にカスタムのcssを加えていった後で考えてみたい。