Ruby - 旧暦カレンダー作成スクリプト!

Updated:


自作の「旧暦カレンダー作成Rubyスクリプト」によりあらかじめ MySQL にカレンダーを作成し、そのデータを Ruby on Rails 製のホームページ上で公開しています。 この時に作成した「旧暦カレンダー作成Rubyスクリプト」は作成対象範囲を年で指定し年単位でカレンダーデータを作成していました。

今回はそのRubyスクリプトを流用して、コマンドラインから日付・オプションを指定して実行すると、その日付に対する各種カレンダー情報を出力するRubyスクリプトを作成しました。(1週間くらい前に) 概要をまとめましたので公開します。

コマンドラインで動作しますので、バッチファイル等で利用できるかと思います。

2000行オーバーのスクリプトなので、このページでは表示できませんが、ソースをダウンロードできるようにしておきます。興味のある方はどうぞ。

※当方作成のRubyスクリプトの他に、旧暦カレンダー計算部分で参考にした高野英明氏作成のjgAWKスクリプトも同梱。

使用方法

動作確認について

当Rubyスクリプトは WindowsXP(SP3) にインストールした Ruby1.9.2-p290 で動作確認しています。 別途Gemパッケージ等の導入も不要です。 他の環境(Linux等)で実行させるには文字コードの変更が必要になる場合があります。

使用方法

ダウンロードした圧縮ファイルを解凍後、コマンドプロンプトで”calendar.rb”を実行するだけです。

>ruby calendar.rb [オプション] [日付]

オプションについて

オプションは半角小文字の英字で指定します。 オプションを指定しない場合は取得可能な全項目を出力します。 オプションを複数指定する場合は間を空けずに文字を記述します。 オプションに指定できるものは以下のとおりです。

オプション 出力項目
a 曜日
b 休日
c ユリウス通日
d 干支
e 旧暦
f 六曜
g 二十四節気
h 雑節
i 節句
j 黄経(太陽)
k 黄経(月)
l 月齢

日付について

日付は8桁の半角数字で指定します。 指定しない場合は当日(システム日付)が指定されたものとみなします。

使用例

引数指定無し

当日の出力可能な全項目を出力します。

>ruby calendar.rb
2011/08/31:  水曜日 2455804.0 戊午 2011/08/03 仏滅 156.9049204136161 177.8470451
9458586 1.9962453292682767

この場合、当日(システム日付)の 曜日・ユリウス通日・干支・旧暦・六曜・黄経(太陽)・黄経(月)・月齢 を出力しています。 (休日等の該当が無いものは出力しません)

オプションのみ指定

当日の指定したオプションの情報を出力します。

>ruby calendar.rb adef
2011/08/31:  水曜日 戊午 2011/08/03 仏滅

この場合、当日(システム日付)の 曜日・干支・旧暦・六曜 を出力しています。

日付のみ指定

指定した日付の出力可能な全項目を出力します。

>ruby calendar.rb 20110923
2011/09/23:  金曜日 秋分の日 2455827.0 辛巳 2011/08/26 先負 秋分 彼岸(秋) 179.26
27941668971 113.84399593826681 24.996245881542563

この場合、2011年09月23日 の 曜日・休日・ユリウス通日・干支・旧暦・六曜・二十四節気・黄経(太陽)・黄経(月)・月齢 を出力しています。

オプションと日付を指定

指定した日付の指定したオプションの情報を出力します。

>ruby calendar.rb ah 20110926
2011/09/26:  月曜日 彼岸明(秋)

この場合、2011年09月26日 の 曜日・雑節 を出力しています。


元々MySQLへ登録するためだったRubyスクリプトを改造して作成しましたので、随所にDBのテーブルを思わせる配列構造が見られます。また、最小限の改造を施していますので一部非効率的な部分も見受けられるかもしれません。あしからず。

※このRubyスクリプトは個人的に利用することが目的で作成しています。実行結果の保証はいたしません。個人の責任の元ご利用ください。 ※また、ベクター等にアップするつもりも(今のところは)ありません。 ※その他、再配布等についてはRubyスクリプト内ヘッダ部に記載のコメントをご確認ください。

旧暦とは何か?黄経とは何か?六曜とは何か?等、こよみに関することは各自 Web 等で調べてください。非常に理系っぽく奥深く興味がわきます。

ちなみに、今回のRubyスクリプトのアルゴリズムを応用して Visual C# で Exe を作成する作業を行っています。 完成すれば、この Exe も公開したいと思います。

以上。





 

Sponsored Link

 

Comments