image

  • フォト Amazonギフト券
    ※この時計の時刻は、閲覧しているパソコンのものであり、必ずしも正確な時間とは限りません

検索

最近のトラックバック

無料ブログはココログ

« 2008年3月15日 | トップページ | 2008年3月17日 »

2008年3月16日

2008-03-16

ant + ruby + ERB でテキストファイル生成

可変部を含むテキストファイルを生成する例を作ってみた。
(実は xfy/xvcd, java 用のファイルを生成するための事前の準備実験です)

$ ls
build.xml  config.yaml  sample01.rb  template.txt

こんな風に実行する。
$ ant clean     // 生成ファイルを削除する
$ ant           // ファイルを生成

$ cat out .txt  // 生成したファイルの内容
# Created: 2008-03-16 08:36:03
foo {
  a = AA
  b = BB
  id = ID
  <AA>xxx/</AA>
}
#--- End of File ---

日付けが埋め込まれている。AA, BB, ID という部分も実は可変になっている。

以下に 生成テキストのテンプレート、ruby プログラム、設定ファイル、ant の build ファイルを示す。
まずは、テンプレートファイル。<%=*%> の部分が可変部だ。
$ cat template.txt
# Created: <%= Time.new.strftime('%Y-%m-%d %H:%M:%S')%>
foo {
  a = <%=a%>
  b = <%=b%>
  id = <%=_id%>
  <<%=a%>>xxx/</<%=a%>>
}
#--- End of File ---

次は変数値の設定ファイル。
$ cat config.yaml

a: AA
b: BB
_id: ID

_id は 本当は id としたいところだが、ruby の id メソッドと名前がぶつかるので _id としている。
(ここで示す例において、変数名が ruby のメソッド名と衝突する場合は_ を付けるなど、利用する側で衝突を避けるようにすることが必要。)

次が ruby スクリプト。
method_missing  を利用することで、テンプレートファイル中には
<$=変数名=> と書くだけで、それが変数値に置換されるようにしている。
(スクリプト先頭部に記してある blog 記事のアイデアを参考にした)

$ cat sample01.rb
# See http://jarp.does.notwork.org/diary/200408b.html#20040820
#          YAMLでパラメータを設定して、ERBで展開する方法を摸索。

require 'yaml'
require 'erb'
require 'pp'

module MyTemplate

  @conf = YAML.load_file('config.yaml')

  def self.run(template)
    ERB.new(template).result(binding)    
  end

  def self.method_missing(symbol, *p)
    v = @conf[symbol.to_s]
    raise "unknown symbol: '#{symbol}' #{p}"  if v == nil
    v
  end
end

# run:  ruby sample01 template.txt
template = ARGV.shift

File.open(template) { |ft|
  puts MyTemplate.run(ft.read)
}

この ruby スクリプトは、もちろん jruby でも動作する。
最後にこれらを ant で利用するようにまとめた。
$ cat build.xml
<?xml version="1.0" encoding="UTF-8" ?>

<project name="antsample" default="generate">

  <property name="dest" value="out.txt"/>

  <target name="clean">
    <delete file="${dest}"/>
  </target>

  <target name="generate" depends="clean">
    <apply executable="ruby"
           output="${dest}"
           logError="true"
           ignoremissing="false"
           failonerror="true">
      <srcfile/>
      <filelist files="sample01.rb"/>
      <arg value="template.txt"/>
    </apply>
  </target>

</project>

朱雀門の画像
2008031601

人間合格 を観た

20080316
井上ひさしの 人間合格
  http://www.komatsuza.co.jp/kouen_new/index.html
15 日の昼公演を観た。

補助席は出ず。4列 17 番で観ることができた。
当日券に」並んだのは 8 人ほど。

この舞台はすまけいさんが出演したのを観たことがある。

岡本健一の第一声を聞いた時、あまり声が出ていないように聞こえ、ちょっと違和感を覚えた。
しかし、それは全くの杞憂であった。その後は普通に声が出ていたし、素敵な演技であった。あれは演出だったのかなぁ。

馬渕英俚可 はキューで美しくて愛らしい。素晴らしい。
休憩を挟んでの 3 時間! でも長さを全く感じさせない素敵な舞台でした。

« 2008年3月15日 | トップページ | 2008年3月17日 »

mokuji

2013年12月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

google

  • twitter
  • __
  • _
    Googleボットチェッカー

合わせて読む

  • 合わせて読む
    フィードメーター - katoy: cocolog あわせて読みたい

リンク