From: WATANABE Hirofumi Date: 2002-12-24T18:27:50+09:00 Subject: [ruby-dev:19173] Re: version.h わたなべです。 Yukihiro Matsumoto writes: > このような対応に異存はないです。が、version.hは人間が読むた > めにもシンプルに保ちたいので、 > > #define RUBY_MAJOR 1 > #define RUBY_MINOR 7 > #define RUBY_TEENY 3 > #define RUBY_YEAR 2002 > #define RUBY_MONTH 12 > #define RUBY_DAY 20 > > だけにするか(マクロ類はversin.cに)、 RUBY_VERSION_CODEを参照している拡張ライブラリも存在するので、 これは無理そうです。ですが、version.hとは別のヘッダファイル を用意してversion.h内でそれをincludeするのはありだと思います。 > あるいは今のversion.h に > 上記の定義を追加する(生成スクリプトをいじる)のいずれかにした > いです。 それではこちらの方向で進めましょう。 わたしが使っていたスクリプトはこんな感じです(-iは外から指定)。 #! /usr/bin/env ruby formats = { 'RELEASE_DATE' => [/".+"/, '"%Y-%m-%d"'], 'RELEASE_CODE' => [/\d+/, '%Y%m%d'], 'YEAR' => [/\d+/, '%Y'], 'MONTH' => [/\d+/, '%m'], 'DAY' => [/\d+/, '%d'] } now = Time.now ARGV.replace ["version.h"] #$-i = '~' while line = gets if /RUBY_(#{formats.keys.join('|')})/o =~ line format = formats[$1] line.sub!(format[0]) do now.strftime(format[1]) end end print line end