Hatena::Grouphackathon

zrail (a.k.a. tobira17, h14i, ...) の Learning Log

2015-09-17

[][][]dman が見つけてきた URL を w3m で読みたかったメモ 02:13 dman が見つけてきた URL を w3m で読みたかったメモ - zrail (a.k.a. tobira17, h14i, ...) の Learning Log を含むブックマーク はてなブックマーク - dman が見つけてきた URL を w3m で読みたかったメモ - zrail (a.k.a. tobira17, h14i, ...) の Learning Log

POSIX (というか Linux )上での話です。*1


本質的なコードは dman.d にはなくて、読むべきは std.process.browse (のソース) だった。やってることは

  • 検索クエリを打つためのコマンドを決める
    • デフォルトでは xdg-open を使う
    • 環境変数 BROWSER にコマンドが指定されている場合はそれを使う
  • exec する

くらいかな。あとはエラー処理。

で、最初は単に BROWSER=w3m してみたけどダメだった。プロセス関係よくわからない。

仕方ないので BROWSER=echo して、 stdio 経由で w3m へ渡すようにしたら上手くいった。

あとは dman の吐く URIsed とかで(ここではパラメータ展開してるけど…)修正してローカルに向けてやれば cppref みたいな使い方ができそうな気がする。

以下コード例。

# web のリソースを読みたいならこれでいける
w3m `BROWSER=echo dman process`
# あるいは curl の出力を流し込んでも読める(ファイルとして読んだほうが便利だから上のほうが良いと思う)
BROWSER=curl dman std.stdio | w3m -T text/html

ローカルにある html ファイルを開く例。だけどちゃんと確認してない。あとdlang.org以外のリソースは開けない。

# ここでは denv を使わせてもらってる
export HTML_DIR="$( denv prefix )/html/d"
export BROWSER=echo

w3m "${HTML_DIR}/${$( dman assert )##*dlang.org/}"
w3m "${HTML_DIR}/${$( dman writeln )##*dlang.org/}"
w3m "${HTML_DIR}/${$( dman simd )##*dlang.org/}"

まぁざっくりこんな感じですかね。

気が向いたらスクリプトにしよう。

*1:ついでに言えば D-man ( D 言語くん)の話ではないよ。リファレンス検索コマンドの dman だよ。