新年の日付が専用メソッドで与えられ、月日の配当が1年の日数等 で決まる暦。いわゆる Rule-Based な暦はほとんど該当します。 サブクラスで新年の日付を与えるメソッド _new_year を再定義し 月日の配当パターンを new への引数で与えます。
FMD.new([quality={})
FMD オブジェクトを生成して返します。 quality 暦法の性質定義ハッシュ
FMD#_date_to_sdn(y [, m=1 or 0 [, d=1 or 0]])
年・月・日を地方時正午通日に変換して返します。 y 年 m 月 (デフォルト値は最初の月の番号) d 日 (デフォルト値は最初の日の番号)
FMD#_sdn_to_date(sdn)
地方時正午通日を年・月・日に変換して返します。 sdn 地方時正午通日
FMD#_m_in_y(y)
指定した年に含まれる月の数を返します。 (運用表現の年初は考慮されません) y 年
FMD#_d_in_y(y)
指定した年に含まれる日の数を返します。 (運用表現の年初は考慮されません) y 年
FMD#_d_in_m(y [, m=1 or 0])
指定した月に含まれる日の数を返します。 y 年 m 月 (デフォルト値は最初の月の番号)
FMD#_new_year(y)
y で指定した年の始めの地方時正午通日を返します。 (サブクラスで再定義してください) このメソッドは Calendar クラスで定義している new_year(運用上の年初) とは異なり暦法上の年初(1月1日)を与えます。 y 年
FMD#_new_year_sd(y)
y で指定した年の始めの地方時正午通日と、その1年の日数を返します。 y 年
FMD#_new_year_yd(sdn)
地方時正午通日 sdn を含む年と、その日の年の通日、その1年の日数を返します。 sdn 地方時正午通日
FMD#_index_of_m(rule, m)
月 m の年の始めからの通月番号を返します。 rule 月日配当規則 m 月を与える id または番号
FMD#_find_rule(key)
key に対応する月日配当規則を返します。 (なければ key から新規に月日配当規則を作ります) key 1年の日数
FMD#_make_rule(key, rule)
new で指定された月日配当規則をプログラムで利用可能にします。 key 月日配当規則のハッシュキー(オーバーライド時に必要) rule 月日配当規則
インスタンス変数 ハッシュのハッシュ@RuleTable の要素の要素
Years => 1 Months => the year length / month Days => the year length / day IDs => Array of the month IDs (Default ID is Integer) Length => Array of the month lengths / day (Mandatory) Offset => Array of the month offsets from the new year / day
FMD#_qualify
FMD オブジェクトの性質定義を初期設定します。 @RuleTable = It defines (year,) month, day arrangement rule. @HalfMoon = If defines days in halfmoon for thai calendar @Months_in_Year = If exist then every year has defined months. @Days_in_Month = If exist then every month has defined days.
Integer 白分の日数 この変数が存在するときは、1ヶ月を白分と黒分に分割します。月の最初の @HalfMoon 日間が白分、それ以降が黒分です。この指定を必要とするのはタ イ暦のみです。
Integer _qualify が @RuleTable を解析した後、もしこれらの数が常に一定であ ることが判ったならば、これらの変数にその値を設定します。Calendar _qualify は、これらの変数を参照して、@TimeUnits の設定を行います。
Hash FMD オブジェクトはハッシュのハッシュ@RuleTableにルール情報 を保持しています。以下そのハッシュの要素の説明です。なお、 ハッシュのキーの取得方法は、サブクラスによって異なります。
Integer ハッシュで定義されるルールの周期の長さをそれぞれの単位で表します。 年の中の月日の配置を定義するルールでは、'Years'は常に 1 です。 現状、要素'Months'は使われていません。
Array [月のID, ...] ハッシュで定義されるルールでの、月のIDの配置を保持します。 閏月のない暦法では、月のIDは単なる通し番号(整数)なので、 この要素は不要です。
Array [月の日数, ...] ハッシュで定義されるルールでの、各月の日数を保持します。 このデータは必ず指定しなければなりません。
Array [月の開始日のオフセット, ...] ハッシュで定義されるルールでの、各月の開始日の年初からの日数を保持 します。_qualify 時に 'Length' から自動生成するのでユーザが指定する ことは通常ありません。