和暦西暦変換

最近、西暦と平成の変換が必要になることが多いけど、即座にできないのでプログラムを書いてみた。これは、正しい怠惰の使い方ですよね。

ただ、seirekiとかsyouwaという変数名を使うのはいやだったので、日本語識別子を試してみる。
日本語識別子は、-Kオプションで文字コードを指定すると使えるようになります。

$ jpdate s60
1985

$ jpdate 2006
H18
#! /opt/local/bin/ruby -w -Ku
# -*- mode:ruby enconding:utf-8 -*-
#
# jpdate.rb - 和暦 <-> 平成相互変換プログラム
#
# Copyright(C) 2007 by mzp
# Author: MIZUNO Hiroki <hiroki1124@gmail.com> 
# http://mzp.sakura.ne.jp/
#
# Timestamp: 2007/07/23 16:27:03
# 
# This program is free software; you can redistribute it and/or
# modify it under the same terms as Ruby itself.
#

def from_昭和(昭和)
  1900 + 昭和 + 25
end

def from_平成(平成)
  2000 + 平成 - 12
end

def to_和暦(西暦)
  case 西暦
  when 1926..1989 # 昭和
    "S#{西暦 - 1988}"
  else # 平成
    "H#{西暦 - 1988}"
  end
end

case ARGV[0]
when /\AS/i # 昭和
  puts from_昭和($'.to_i)
when /\AH/i # 平成
  puts from_平成($'.to_i)
when /\A\d/ # 西暦 
  puts to_和暦(ARGV[0].to_i)
end

ポータビリティはさておき、日本語の識別子のほうが圧倒的に分りやすいですね。
乱用さえしなければ、日本語識別子はありかもしれない。