Class: When::CalendarNote::Japanese::LunarPhases
- Inherits:
-
LunarPhases
- Object
- BasicTypes::Object
- TM::Object
- TM::ReferenceSystem
- When::CalendarNote
- LuniSolarPositions
- LunarPhases
- When::CalendarNote::Japanese::LunarPhases
- Defined in:
- lib/when_exe/region/japanese/notes.rb
Overview
月の位相による暦注
Constant Summary
Constants inherited from When::CalendarNote
Bahai, CalendarDepend, Chinese, CommonWithRokuyo, CommonWithSovietFiveDay, CommonWithSovietSixDay, Default, HashProperty, When::CalendarNote::Javanese, When::CalendarNote::JulianDay, Mayan, Tibetan, Yis
Constants included from Parts::Resource
Parts::Resource::ConstList, Parts::Resource::ConstTypes, Parts::Resource::IRIDecode, Parts::Resource::IRIDecodeTable, Parts::Resource::IRIEncode, Parts::Resource::IRIEncodeTable, Parts::Resource::IRIHeader, Parts::Resource::LabelProperty
Instance Attribute Summary
Attributes inherited from LuniSolarPositions
#delta, #den, #formula, #margin, #num
Attributes inherited from When::CalendarNote
Attributes inherited from TM::ReferenceSystem
#domain_of_validity, #position
Attributes inherited from BasicTypes::Object
Attributes included from Parts::Resource
#_pool, #child, #keys, #locale, #namespace
Class Method Summary collapse
Methods inherited from LuniSolarPositions
#event_delta, #event_eval, #event_time, #position
Methods inherited from When::CalendarNote
#copy, #day, #duration, #enum_for, #include?, #month, #note?, #notes, #year
Methods inherited from TM::ReferenceSystem
Methods included from Parts::Resource
#[], #^, _abbreviation_to_iri, _decode, _encode, _extract_prefix, _instance, _instantiate, _parse, _path_with_prefix, _replace_tags, _setup_, _setup_info, _simplify_path, base_uri, #each, #enum_for, #hierarchy, #include?, #included?, #iri, #leaf?, #m17n, #map, #next, #parent, #prev, #registered?, root_dir
Methods included from Parts::Resource::Pool
#[], #[]=, #_pool, #_setup_, #pool_keys
Methods included from Parts::Resource::Synchronize
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class When::Parts::Resource
Class Method Details
._day_notes(notes, dates, conditions = {}) ⇒ Object
日の暦注
988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 |
# File 'lib/when_exe/region/japanese/notes.rb', line 988 def self._day_notes(notes, dates, conditions={}) date = When.when?(dates.o_date.to_cal_date.to_s, {:frame=>dates.o_date.frame, :clock=>dates.l_date.frame.time_basis}) phase, metsu = dates.cal4note.l_phases.position(date) # 滅 notes['滅'] = metsu == 2 && dates.range < 11 ? '滅' : nil # 月相 unless notes['月相'] # イベントの判定 formula = dates.cal4note.l_phases.formula clock = formula.kind_of?(When::Ephemeris::ChineseTrueLunation) && (5..25).include?(dates.l_date.cal_date[2]) ? When.Clock(-21600) : # 唐代暦法の望弦は午前6時を日の境界とする dates.l_date.frame._time_basis[-1] # その他(進朔も考慮した時刻) odate = When.when?(dates.o_date.to_cal_date.to_s, {:frame=>dates.o_date.frame, :clock=>clock}) phases = formula.phase_range(odate) thitis = phases.map {|phase| (phase % 1) * 30.0} note = if thitis[0] >= thitis[1] dates.o_date.frame.kind_of?(When::CalendarTypes::Christian) || conditions[:shoyo] ? '朔' : nil else range = thitis[0]...thitis[1] range.include?( 7.5) ? '上弦' : range.include?(15.0) ? '望' : range.include?(22.5) ? '下弦' : nil end # 結果の反映 if conditions[:shoyo] # :shoyo が true ならイベント時刻も返す notes['月相'] = if note etime = formula._to_seed_type(formula.cn_to_time((phases[1] * 4).floor / 4.0), odate) if formula.respond_to?(:lunation_length) && formula.lunation_length.kind_of?(Rational) shoyo = etime.clk_time.universal_time shoyo += When::TM::Duration::DAY if (0...clock.universal_time).include?(shoyo) shoyo = (shoyo / When::TM::Duration::DAY * formula.denominator * 1000 + 0.5).floor / 1000.0 shoyo = shoyo.to_i if shoyo == shoyo.to_i "#{note}(#{shoyo}/#{formula.denominator})" else etime.events = [note] etime end else nil end else # :shoyo が false ならイベン名のみ返す notes['月相'] = note end end # 月食 unless notes['月食'] && notes['神吉'] && notes['三寶吉'] && notes['小字注'] level = (conditions[:lunar_eclipse]||0).to_i if level == -1 note = nil else key = dates.m_date.to_s[/\(.+\z/] if key note, = Japanese::Eclipse::Eclipses[key.gsub(/[()]/,'')] elsif dates.o_date.location && dates.o_date.frame.kind_of?(When::CalendarTypes::Christian) info = dates.o_date.location.lunar_eclipse(date..date, dates.range >= 14 ? When::PT0H : When::PT6H) note = '月' + Japanese::Eclipse.eclipse_summary(info[0]) unless info.empty? end if note note.sub!(/\*.*\z/, '') note = nil unless /月/ =~ note note = nil if level[0] == 1 && /昼/ =~ note note = nil if level[1] == 1 && /^\(/ =~ note end end notes['月食'] = note end notes end |