暦年代
see gml schema
この暦年代の基点となる事象
Event used as the datum for this calendar era
type : String 通常 String のサブクラスである When::BasicTypes::M17n を使用する。 [Accession,代始]:: 天皇・皇帝などの代始めの改元,必ずしも践祚と連動しない。 :: JIS X7108 附属書D表3に参照事象の例として「新しい天皇の即位」とある。 :: これは践祚を意味するので、岡田芳朗氏によれば適切ではないとのこと。 :: 英語には適切な訳語がないと思われる。 [FelicitousEvent,祥瑞]:: 祥瑞の発生に伴う改元 [NaturalDisaster,災異]:: 災異の発生に伴う改元 [InauspiciousYear,革年]:: 甲子革令・辛酉革命説による改元 [Foundation,創業]:: 建国による元号の制定 [CalendarReform,改暦]:: 改暦に伴う epoch_of_use の境界
この暦による参照事象の日付
Date of the reference event in the calendar being described
type : When::TM::CalDate 明治以前の改元は当該年の初めにに遡って適用された。しかし、日記などの資料は当然旧年号で 記載されている。このような場合、reference_date の分解能を「年」とする。 本ライブラリでは、reference_date の分解能が「年」の場合、When::TM::TemporalPosition._instance の options[:lower] で年号使用の下限を年初とするか、epoch_of_use の下限とするかを 指定することができる。
この暦年代が日付の基礎として使用する期間
Period for which the era was used as a basis for dating
type : [When::TM::(Temporal)Position] 途中の改暦を指定するために要素が必要になることがあり、要素数が2を超えることがある。 最初の要素が When::TM::IndeterminateValue::MIN(-Infinity)の場合、年数を降順にカウントする。
この暦年代の元年の年番号(additional attribute)
The year number of the calendar associated with the first year of this calendar era
type : Integer
When::TM::CalendarEra オブジェクトを検索し取得する
see When#CalendarEra
# File when/tmreference.rb, line 738 738: def _instance(*args) 739: # パラメータ 740: args = args.dup 741: options = (args[1].kind_of?(Hash)) ? args.pop.dup : {} 742: key, epoch, reverse = options.delete(:label) || args 743: area = options.delete(:area) 744: period = options.delete(:period) 745: count = options.delete(:count) || 1 746: 747: # 候補 748: setup unless @_pool 749: pool = _candidates(options, area, period, key, epoch, false) + 750: _candidates(options, area, period, key, reverse, true) 751: pool.uniq! 752: return pool unless pool.size < count 753: 754: @order.each do |iri| 755: When.IRI(iri) 756: pool = _candidates(options, area, period, key, epoch, false) + 757: _candidates(options, area, period, key, reverse, true) 758: pool.uniq! 759: return pool unless pool.size < count 760: end 761: 762: return [] 763: end
When::TM::CalendarEra Class のグローバルな設定を行う
order : [String of IRI] When::TM::CalendarEra の検索順序を指定する
# File when/tmreference.rb, line 729 729: def setup(order=nil) 730: @_pool = {} 731: @order = order || ['_tm:Common', '_tm:ModernJapanese', '_tm:Jewish', '_tm:Mayan', '_tm:Japanese', '_tm:Chinese'] 732: end
@julian_reference と other を比較する
other : Comparable 比較対象 returns : Integer 比較結果を 負, 0, 正の値で返す
# File when/tmreference.rb, line 991 991: def <=>(other) #TODO @precision は? 992: @julian_reference.universal_time <=> other.julian_reference.universal_time 993: end
この暦年代が日付の基礎として使用する期間
Period for which the era was used as a basis for dating
returns : When::TM::Period ISO19108 に When::TM::Period と規定されているため、変数 @epoch とは別に、 本メソッドを提供する。
# File when/tmreference.rb, line 892 892: def epoch_of_use 893: @epoch_of_use ||= 894: Period.new(*([0, 1].map {|i| 895: date = @epoch[i] 896: if date.kind_of?(CalDate) 897: options = date._attr 898: options[:frame] = options.delete(:clock) 899: date = JulianDate.new(date.universal_time, options) 900: end 901: Instant.new(date) # See JIS X7108 5.3.2.2 e) When::TM::Period は直接 JulianDate を保持できない 902: })) 903: end
年数の数え方
returns : Boolean true - 降順 (Before Common Era 方式) false - 昇順 (Common Era 方式)
# File when/tmreference.rb, line 912 912: def reverse? 913: @epoch[0].indeterminated_position == Min 914: end
当該の暦年代の日付に変換する
date : When::TM::(Temporal)Position trans_options : Hash * :lower => 暦年代適用の下限 * true - epoch_of_use の始め(default) * :reference_date - 参照事象の日付 * :upper => 暦年代適用の上限 * true - epoch_of_use の終わり(default) * :reference_date - 参照事象の日付 returns : When::TM::TemporalPosition When::TM::IndeterminateValue::Before - 当該の暦年代より前の日付である When::TM::IndeterminateValue::After - 当該の暦年代より後の日付である その他 - 当該の暦年代の日付に変換された When::TM::TemporalPosition
# File when/tmreference.rb, line 933 933: def trans(date, trans_options={}) 934: # 当該日付の決定 935: date = date.any_other if date.kind_of?(Position) 936: epoch, cal_date = 937: case date 938: when Array ; _trans_array(date) 939: when JulianDate, DateAndTime ; _trans_date(date, date.clock) 940: when TemporalPosition ; _trans_date(date) 941: when Numeric ; _trans_date(JulianDate.new((date-JulianDate::JD19700101)*IntervalLength::DAY)) 942: else ; raise TypeError, "Irregal Seed Date Type" 943: end 944: 945: # 範囲指定オプションの取得 946: trans_options ||= {} 947: lower = trans_options[:lower] || :reference_date 948: upper = trans_options[:upper] || true 949: 950: # 下限の確認 951: unless (@epoch[0].indeterminated_position == Min) 952: case lower 953: when true ; return Before if (cal_date.to_i < @epoch[0].to_i) 954: when :reference_date ; return Before if (cal_date.to_i < @reference_date.to_i) 955: end 956: end 957: 958: # 上限の確認 959: unless (@epoch[1].indeterminated_position == Max) 960: case upper 961: when true ; return After if (cal_date.to_i >= @epoch[1].to_i) 962: when :reference_date ; return After if (cal_date.to_i > @reference_date.to_i) 963: end 964: end 965: 966: # 発見した日時の属性設定 967: cal_date.calendar_era_name = [@label, @epoch_year, reverse?] 968: cal_date.cal_date[0] -= @epoch_year 969: cal_date.trans = trans_options.dup 970: cal_date.query = epoch.query.dup 971: return cal_date 972: end
その他のメソッド
When::TM::CalendarEra で定義されていないメソッドは 処理を @reference_date (type: When::TM::TemporalPosition) に委譲する
# File when/tmreference.rb, line 1305 1305: def method_missing(name, *args, &block) 1306: @reference_date.send(name.to_sym, self, *args, &block) 1307: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.