ベトナム暦日の組み込み(Rails & API)
★ Rails アプリケーション側の話
http://hosi.org/cookies/Vietnamese がベトナム暦日の動作設定になっています。

● Era
2014-03-06 の記事にも書きましたように、12世紀の李朝時代の年代に
『大越史記全書』と『越史略』で2年ずれがあるそうです。[1]
この設定で、どちらの年代を使用するかを指定します。
デフォルトは『大越史記全書』です。
● 1849
昨日の記事にも書きましたように、1849年は欽定萬年書では清朝と同じで、
歴代年紀百中經では1日ずれがあります。一旦ずれがある朔閏表を発表した
後で、清朝とのずれに気付いて差し替えたのではないかとの推測もあります。
この設定で、どちらの朔閏表を使用するかを指定します。
デフォルトは『清と同じ』です。[2]
この二つの指定の組み合わせに応じて、Rails アプリケーションが使用する
ベトナム暦日用 CalendarEra が決まります。
(1) 大越史記全書 & 清と同じ : _e:Vietnamese
(2) 越史略 & 清と同じ : _e:Vietnamese?LY=VSL
(3) 大越史記全書 & 阮別暦 : _e:Vietnamese?LY=TT&DN=LDNK [3]
(4) 越史略 & 阮別暦 : _e:Vietnamese?LY=VSL&DN=LDNK
LY は Lý Dynasty の略
TT は Đại Việt sử ký toàn thư の略
VSL は Việt Sử Lược の略
DN は Đại Nam の略
LDNK は Lich Đại nien ký bach trung kinh の略[4]
★ API としてベトナムの暦年代を使う場合の話
(2)~(4)のCalendarEraをRubyスクリプトで使用する場合、あらかじめ
CalendarEra('Vietnamese?LY=VSL')
のようなコードを明示的に実行して、メモリ内に当該CalendarEraを
ロードしておく必要があります。
require 'date'
require 'when_exe'
include When
date = when?('嗣徳2.8.1')
puts [date.to_date, date] #=> ["1849-09-17", "嗣徳02(1849).08.01"]
CalendarEra('Vietnamese?LY=TT&DN=LDNK')
date = when?('ベトナム?LY=VSL&DN=LDNK::阮朝::嗣徳2.8.1')
puts [date.to_date, date] #=> ["1849-09-16", "ベトナム?LY=TT&DN=LDNK::阮朝::嗣徳02(1849).08.01"]
date = when?('嗣徳2.8.1')
p [date.to_date.to_s, date.to_s] #=> ["1849-09-17", "ベトナム::阮朝::嗣徳02(1849).08.01"]
[1] 実装は暫定的なものです。ずれの内容を確認して改訂予定です。
[2] 『清と同じ』朔閏表は、すでに _c:Chinese1645 で実装していますので、
_c:Vietnamese1813 では一日ずれがある方を用いました。
[3] 実装の都合で“LY=TT&”は省略できません。
[4] ダイアクリティカルマークがわからず失礼します。
----
[2014-04-18 追記]
大越史記→大越史記全書
DVSK →TT
http://hosi.org/cookies/Vietnamese がベトナム暦日の動作設定になっています。

● Era
2014-03-06 の記事にも書きましたように、12世紀の李朝時代の年代に
『大越史記全書』と『越史略』で2年ずれがあるそうです。[1]
この設定で、どちらの年代を使用するかを指定します。
デフォルトは『大越史記全書』です。
● 1849
昨日の記事にも書きましたように、1849年は欽定萬年書では清朝と同じで、
歴代年紀百中經では1日ずれがあります。一旦ずれがある朔閏表を発表した
後で、清朝とのずれに気付いて差し替えたのではないかとの推測もあります。
この設定で、どちらの朔閏表を使用するかを指定します。
デフォルトは『清と同じ』です。[2]
この二つの指定の組み合わせに応じて、Rails アプリケーションが使用する
ベトナム暦日用 CalendarEra が決まります。
(1) 大越史記全書 & 清と同じ : _e:Vietnamese
(2) 越史略 & 清と同じ : _e:Vietnamese?LY=VSL
(3) 大越史記全書 & 阮別暦 : _e:Vietnamese?LY=TT&DN=LDNK [3]
(4) 越史略 & 阮別暦 : _e:Vietnamese?LY=VSL&DN=LDNK
LY は Lý Dynasty の略
TT は Đại Việt sử ký toàn thư の略
VSL は Việt Sử Lược の略
DN は Đại Nam の略
LDNK は Lich Đại nien ký bach trung kinh の略[4]
★ API としてベトナムの暦年代を使う場合の話
(2)~(4)のCalendarEraをRubyスクリプトで使用する場合、あらかじめ
CalendarEra('Vietnamese?LY=VSL')
のようなコードを明示的に実行して、メモリ内に当該CalendarEraを
ロードしておく必要があります。
require 'date'
require 'when_exe'
include When
date = when?('嗣徳2.8.1')
puts [date.to_date, date] #=> ["1849-09-17", "嗣徳02(1849).08.01"]
CalendarEra('Vietnamese?LY=TT&DN=LDNK')
date = when?('ベトナム?LY=VSL&DN=LDNK::阮朝::嗣徳2.8.1')
puts [date.to_date, date] #=> ["1849-09-16", "ベトナム?LY=TT&DN=LDNK::阮朝::嗣徳02(1849).08.01"]
date = when?('嗣徳2.8.1')
p [date.to_date.to_s, date.to_s] #=> ["1849-09-17", "ベトナム::阮朝::嗣徳02(1849).08.01"]
[1] 実装は暫定的なものです。ずれの内容を確認して改訂予定です。
[2] 『清と同じ』朔閏表は、すでに _c:Chinese1645 で実装していますので、
_c:Vietnamese1813 では一日ずれがある方を用いました。
[3] 実装の都合で“LY=TT&”は省略できません。
[4] ダイアクリティカルマークがわからず失礼します。
----
[2014-04-18 追記]
大越史記→大越史記全書
DVSK →TT
この記事へのコメント