HTMLテンプレート

部下の作っているシステムの関係で、バッチ用のHTMLテンプレートシステムを作る。

元々、オンライン用のものは作っていたので、それがバッチで動くようにしただけ。と言っても、「データをどこからどうやって注入してやるか」ということがあるので、当然ながらそのままは使えない。まー、ファイルからデータを読み込む汎用ルーチンを作っていたので、それを流用するだけだ。実質3時間程度でできる。汎用ルーチンはありがたいもので、CSVだろうがXMLだろうが、COBOLデータだろうが、関数呼出し一発で済む。当然国際化もしてある。

そんなわけでできたものを使わせていたら、変数を参照するところで「配列を配列の値で参照したい」と言い出す。元々のシステムは配列はそのまま「なんか特殊な記号が混ざってる名前」という把握でやっていたのだが、「配列の配列」を実現するためには、マジメに式を評価してやらないといけない。となると、式の解析をして… となって、結構面倒。

面倒は面倒なんだけど、そんなことはミドルウェアでやっておかないと、アプリケーションにいらない手間がかかってしまって嫌なので、適当に過去に書いた処理系からいろいろパクって来て、まじめに式を評価するルーチンを書いてしまう。ついでに配列の参照だけではなくて、演算もできるようにしたので、


<fixed name="foo.val[foo.item[#1]+1] + foo.val[2]">

みたいな表記を可能にした。式になっているのに"name"なんて属性もおかしいが、まぁこれはご愛敬ということで。

この作業は昨夜始めたんで、実質12時間はかかってない。本当は4時間くらいで動いたんだけど、どうも多次元配列を使いたそうな空気を感じたので、その辺を見直して書き直したので、それくらいかかってしまった。

しかし、ここまでやると、「ここに任意のRubyの式を」とか言い出すような気がして、ガクガクブルブル(AA略)だ。それをやってもそう大変ではないのだが、オンラインとコードを共用しているし、同じように動かすにはそれは必須だから、余計なオーバーヘッドがかかってしまうので嫌なのだ。「富豪でやれ」という声が聞こえて来そうだけど、こちとら貧民なもんで。

ちなみにこのテンプレートシステム、実はコンパイラになっている。最初のパスでテンプレートをバイトコードにコンパイルして、それを実行する時に埋め込み処理をしている。なんでそんなことをするかと言えば、文字コードは「self insert」だとみなして実行すると、いろんなところが手抜きできるからだ。

ところが、今回入れた機能はインタープリタになっているものだから、コンパイラにインタープリタが混ざっている形になって、なんかかこわるい。とは言え、直すとえらい手間だしなぁ。将来の課題ということで。

Google Reader Yahoo Facebook Twitter Digg FriendFeed Delicious Google Translate
This entry was posted on1月 23rd, 2005 at 16:37:12. You can follow any responses to this entry through the RSS 2.0. Both comments and pings are currently closed.

Comments are closed.

  • 私について

    ただのプログラマです、ハッカーではありません。

    秋葉で暮し秋葉で仕事してますが、秋葉系は嫌いです。物事を冷静に分析することは好きですが、ニヒリストは嫌いです。

    秋葉でちっこい会社をやってます。 こーゆーことがお仕事です。

    詳しいことは、自己紹介のページでも見て下さい。また、mixiの方でもいろいろわかるかも知れません。

    日経ITProに連載(生越昌己のオープンソースGTD)を書いています。「ちゃんと書いた文章」が読みたい人は、そっちを読む方がいいと思います。

  • このページについて

    ここは私の雑文の置き場です。WordPressを使っていますが、いわゆるblogのつもりで書いているわけではありません。「覗き見のできるチラ裏」くらいの意味しかありません。

    もしかしたら有用なことがあるかも知れません。あるいはむかつくことも書いてあるかもしれません。それらはみな「そんなものだ」と思っておくに留めましょう。

    コメントを書くのは構いませんが、「反論」の類はよそでやって下さい。同意する気のない人達と議論する気は全くありませんので、議論したければよそで勝手にやって下さい。

    と言っても、「読むな」「広めるな」というわけでもありません。リンク、ブクマの類は御自由に。

  • カテゴリ

  • 過去の記事

  • メタ情報