自己顕示欲の開放治療所

erg, programming and something.

別名:Laughing and Grief 雑記

Latin and Greekは習ったこともない

真面目な記事の他、特定の方には不快と思われる事柄に関して言及を行うことがあります。ちょっと頑張りますが、Blog内で解決できなかった場合要望があれば別ページに技術記事は書き直します

Perl to Goしようと思ったら結構既出だった

この記事はEWB アドベントカレンダー2019の19日目の記事です。

adventar.org

この一連の記事の最終的な目標は現代のTeXLive環境で動作するEWBを Invent*1することだというのは初めて書く気もします。アドベントカレンダー中には終わりませんが、長期的にはできるといいな。

さて、EWBを構成するツールはどれもこれもJavaかEmacsLispだと思っていたら、 そこそこPerlスクリプトがあることが過去の記事で判明したワケです。 Perl5が動かない現代的環境はほぼ無いので、これらはそのまま持ってきても 大体の環境で動作してくれるはずです。でも、気軽に達成感が得られそうな手段を放置するのはなんかアレだし、モチベーションアップのために手作業のあたたかみのある車輪を手に入れたい。

一般的な話として、「かつてPerlで書き捨てたスクリプトをGoに直したい」欲求は 多いようで、様々な記事が見つかります*2。例えば

qiita.com

のような。

あと19日が1時間もない状態でこの記事を書きはじめたので、ザッと見ていきましょう。

gettoc

github.com

サルベージしたスクリプト群からgettocの登場です。 読みこむewbファイルを登録したファイルを元に、Table of Contentsを作るという目的のツールですね。\LaTeX{}も読み込んだファイルの見出しからtocを生成してくれますが、 こちらはいつ使うんだ、という。各トリガなどの読み込みをしてEWBファイルとしての目次を出力します。\tableofcontentstexの処理になると、\TeX{}nitianの仕事になってしまうので、この独自tocを使っていくようです。

方針としては

  • init処理 -> os/flagでやればよさそう
  • トリガリスト取得 -> 読み込んだファイル中のトリガをstringのリストにする
  • ファイル処理 -> メモリ容量を超越する超巨大ファイルは後で考えるとしてとりあえずio/utilかな
  • 見出し文字列をファイルから取得 -> 一先ずreadLine()あたりで良さそう。少なくとも見出しは行頭スタートで見出しになる程度の文字数しかないと仮定すれば。
  • 出力用ハードコード文字列 -> text/templateで別にした方が取り回しがいい?

といった感じですね。その後で元にないお節介機能を加えるなら、巨大ファイル対策、並列化、パスのOS間差異吸収あたりでしょうか。

Next

やっていきをしたいんですが、1日は24時間しかない。 尻切れトンボな25日目にならないようにはしたい。したいが。

*1:1. 発明する 2. でっち上げる

*2:CUIツールが作りやすいことなどが関連しているのでしょうか。