Class: When::V::Timezone

Inherits:
Root show all
Extended by:
Parts::Resource::Pool
Includes:
Parts::Timezone::Base
Defined in:
lib/when_exe/icalendar.rb

Overview

Timezone を定義する

BEGIN:VTIMEZONE...END:VTIMEZONE のブロックに対応

Constant Summary collapse

Properties =
[['tzid'], [],
['last_modified', 'tzurl', 'x_lic_location'], [], []]
Classes =
[Standard, Daylight]

Constants inherited from Root

Root::AwareProperties, Root::DefaultOptional, Root::DefaultUnique

Constants included from Parts::Resource

Parts::Resource::LabelProperty

Instance Attribute Summary

Attributes included from Parts::Timezone::Base

#daylight, #difference, #standard

Attributes inherited from Root

#calscale, #property

Attributes included from Parts::Resource

#_pool, #child, #keys, #locale, #namespace

Instance Method Summary collapse

Methods included from Parts::Resource::Pool

[], []=, _pool, _setup_, pool_keys

Methods included from Parts::Resource::Synchronize

#synchronize

Methods included from Parts::Timezone::Base

#^

Methods inherited from Root

#_enumerator, #include?

Methods included from Parts::Resource

#[], #^, _decode, _encode, _extract_prefix, _instance, _parse, _path_with_prefix, _replace_tags, _setup_, #each, #enum_for, #hierarchy, #include?, #included?, #iri, #leaf?, #m17n, #map, #next, #parent, #prev, #registered?

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class When::Parts::Resource

Instance Method Details

#_daylight(time) ⇒ Object

Raises:

  • (ArgumentError)


914
915
916
917
918
919
920
921
922
# File 'lib/when_exe/icalendar.rb', line 914

def _daylight(time)
  raise ArgumentError, "Needless daylight saving time evaluation" unless _need_validate
  frame, cal_date, clk_time = time
  time   = frame.to_universal_time(cal_date, clk_time, @standard) if clk_time
  ndate  = _neighbor_event_date(time)
  nprop  = ndate.clock.tz_prop
  time   = frame.to_universal_time(cal_date, clk_time, nprop.tzoffsetfrom) if clk_time && !@standard.equal?(nprop.tzoffsetfrom)
  (time >= ndate.universal_time) ? nprop.tzoffsetto : nprop.tzoffsetfrom
end

#_need_validateObject



925
926
927
# File 'lib/when_exe/icalendar.rb', line 925

def _need_validate
  (@difference != 0)
end

#current_period(current_date = Time.now) ⇒ Range

同一の時間帯を用いた期間

Parameters:

Returns:

  • (Range)
    期間が過去または未来に対して無限に続く場合は、GeometricComplex
    期間が有界の場合は、start…end という形式の Range


905
906
907
908
909
910
911
# File 'lib/when_exe/icalendar.rb', line 905

def current_period(current_date=Time.now)
  current_date = When.when?(current_date) unless current_date.kind_of?(When::TM::TemporalPosition)
  period = _tz_period(current_date.universal_time)
  range  = period[1]
  return range if range.kind_of?(Range)
  GeometricComplex.new([period], !range)
end

#labelString

ユニーク識別名 - TZID Property をユニーク識別名とする

Returns:



893
894
895
# File 'lib/when_exe/icalendar.rb', line 893

def label
  @label ||= @property['tzid'].object
end