Included Modules

Class Index [+]

Quicksearch

When::TM::CalendarEra

暦年代

see gml schema

Attributes

reference_event[R]

この暦年代の基点となる事象

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 の境界
reference_date[R]

この暦による参照事象の日付

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 の下限とするかを
    指定することができる。
julian_reference[R]

参照事象のユリウス日

Julian date of the reference event

  type : When::TM::JulianDate
epoch[R]

この暦年代が日付の基礎として使用する期間

Period for which the era was used as a basis for dating

  type : [When::TM::(Temporal)Position]
    途中の改暦を指定するために要素が必要になることがあり、要素数が2を超えることがある。
    最初の要素が When::TM::IndeterminateValue::MIN(-Infinity)の場合、年数を降順にカウントする。
epoch_year[R]

この暦年代の元年の年番号(additional attribute)

The year number of the calendar associated with the first year of this calendar era

  type : Integer
dating_system[R]

この暦年代と関連付けられた暦 (relation - Basis)

The calendar associated with the calendar eras being described

  type : [When::TM::Calendar]
options[R]

その他の属性 - additional attribute

  type : Hash
    'area'   => When::BasicTypes::M17n
       暦年代の使用地域
    'period' => When::BasicTypes::M17n
       暦年代の使用時代
    the others => String
       epoch_of_use の 'name' などの指定を反映

Public Class Methods

_instance(*args) click to toggle source

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
setup(order=nil) click to toggle source

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

Public Instance Methods

<=>(other) click to toggle source

@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
epochOfUse() click to toggle source
Alias for: epoch_of_use
epoch_of_use() click to toggle source

この暦年代が日付の基礎として使用する期間

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
Also aliased as: epochOfUse
reverse?() click to toggle source

年数の数え方

  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
trans(date, trans_options={}) click to toggle source

当該の暦年代の日付に変換する

  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

Private Instance Methods

method_missing(name, *args, &block) click to toggle source

その他のメソッド

  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.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.