lib/when_exe/region/jewish.rb in when_exe-0.3.6 vs lib/when_exe/region/jewish.rb in when_exe-0.3.7
- old
+ new
@@ -1,126 +1,126 @@
-# -*- coding: utf-8 -*-
-=begin
- Copyright (C) 2011-2014 Takashi SUGA
-
- You may use and/or modify this file according to the license described in the LICENSE.txt file included in this archive.
-=end
-
-module When
- class BasicTypes::M17n
-
- Jewish = [self, [
- "locale:[=en:, ja=ja:, alias]",
- "names:[Jewish=]",
- "[Jewish=en:Hebrew_calendar, ユダヤ暦]",
-
- [self,
- "names:[IntercalaryMonth=en:Intercalation, 閏月]",
- "[%s I=, 第1=]",
- "[%s II=, 第2=]",
- ],
-
- [self,
- "names:[Month, 月=ja:%%<月_(暦)>]",
- "[Tishrei, ティシュリー=]",
- "[Cheshvan, マルヘシュバン=]",
- "[Kislev, キスレーヴ=]",
- "[Tevet, テベット=]",
- "[Shevat, シュバット=]",
- "[Adar, アダル]",
- "[Nisan, ニサン=]",
- "[Iyar, イヤール=]",
- "[Sivan, シバン]",
- "[Tammuz, タムーズ=]",
- "[Av, アブ]",
- "[Elul, エルール=]"
- ]
- ]]
- end
-
- class TM::CalendarEra
-
- #
- # Anno Mundi epoch
- #
- Jewish = [self, [
- "locale:[=en:, ja=ja:, alias]",
- "area:[Israel, イスラエル]",
- ["[AnnoMundi=en:Anno_Mundi, ユダヤ紀元, *alias:HY]1.1.1", "Calendar Epoch", "01-01-01^Jewish"],
- ]]
- end
-
- module CalendarTypes
-
- #
- # Jewish Calendar
- #
- class Jewish < TableBased
-
- include Lunar
-
- private
-
- # オブジェクトの正規化
- def _normalize(args=[], options={})
- @label = 'Jewish::Jewish'
-
- # Default Parameters
- Rational
- @epoch_in_CE ||= 1
- @origin_of_MSC ||= 3761
- @origin_of_LSC ||= 1721300 + Rational( 9415, 98496)
- @mean_month ||= 29 + Rational(261307, 492480)
- @leap_period ||= 19
- @leap_number ||= 7
- @leap_base ||= 1
-
- # Derived Parameters
- @no_leap_number = @leap_period - @leap_number
- @date_shift = @mean_month / @leap_period
- @mean_year = 12 * @mean_month + @leap_number * @date_shift
-
- # Month & Day Index
- @indices ||= [
- When.Index('Jewish::Month', {:branch=>{-1=>When.Resource('_m:Jewish::IntercalaryMonth::*')[0],
- 1=>When.Resource('_m:Jewish::IntercalaryMonth::*')[1]}}),
- When::Coordinates::DefaultDayIndex
- ]
-
- # Month & Day Arrangement
- @rule_table ||= {
- 353 => {'Length'=>[30,29,29,29] + [30,29]*4, 'IDs'=>'1,2,3,4,5,6,7,8,9,10,11,12' },
- 354 => {'Length'=>[30,29,30,29] + [30,29]*4, 'IDs'=>'1,2,3,4,5,6,7,8,9,10,11,12' },
- 355 => {'Length'=>[30,30,30,29] + [30,29]*4, 'IDs'=>'1,2,3,4,5,6,7,8,9,10,11,12' },
- 383 => {'Length'=>[30,29,29,29,30] + [30,29]*4, 'IDs'=>'1,2,3,4,5,6*,6=,7,8,9,10,11,12'},
- 384 => {'Length'=>[30,29,30,29,30] + [30,29]*4, 'IDs'=>'1,2,3,4,5,6*,6=,7,8,9,10,11,12'},
- 385 => {'Length'=>[30,30,30,29,30] + [30,29]*4, 'IDs'=>'1,2,3,4,5,6*,6=,7,8,9,10,11,12'}
- }
-
- super
- end
-
- # 年初の通日
- #
- # @param [Array<Numeric>] date ( 年 )
- #
- # @return [Integer] 年初の通日
- #
- def _sdn_(date)
- y = +date[0]
- g = (((y + @leap_base) % @leap_period) * @no_leap_number) % @leap_period
- sdn, f = (y * @mean_year + g * @date_shift + @origin_of_LSC).divmod(1)
-
- case sdn % 7
- when 2,4,6 # Wed, Fri, Sun
- sdn += 1
- when 0 # Mon
- sdn += 1 if ((f >= Rational(23269, 25920)) && (g > 11))
- when 1 # Tue
- sdn += 2 if ((f >= Rational( 1367, 2160)) && (g > 6))
- else # Thu, Sat
- end
- return sdn
- end
- end
- end
-end
+# -*- coding: utf-8 -*-
+=begin
+ Copyright (C) 2011-2014 Takashi SUGA
+
+ You may use and/or modify this file according to the license described in the LICENSE.txt file included in this archive.
+=end
+
+module When
+ class BasicTypes::M17n
+
+ Jewish = [self, [
+ "locale:[=en:, ja=ja:, alias]",
+ "names:[Jewish=]",
+ "[Jewish=en:Hebrew_calendar, ユダヤ暦]",
+
+ [self,
+ "names:[IntercalaryMonth=en:Intercalation, 閏月]",
+ "[%s I=, 第1=]",
+ "[%s II=, 第2=]",
+ ],
+
+ [self,
+ "names:[Month, 月=ja:%%<月_(暦)>]",
+ "[Tishrei, ティシュリー=]",
+ "[Cheshvan, マルヘシュバン=]",
+ "[Kislev, キスレーヴ=]",
+ "[Tevet, テベット=]",
+ "[Shevat, シュバット=]",
+ "[Adar, アダル]",
+ "[Nisan, ニサン=]",
+ "[Iyar, イヤール=]",
+ "[Sivan, シバン]",
+ "[Tammuz, タムーズ=]",
+ "[Av, アブ]",
+ "[Elul, エルール=]"
+ ]
+ ]]
+ end
+
+ class TM::CalendarEra
+
+ #
+ # Anno Mundi epoch
+ #
+ Jewish = [self, [
+ "locale:[=en:, ja=ja:, alias]",
+ "area:[Israel, イスラエル]",
+ ["[AnnoMundi=en:Anno_Mundi, ユダヤ紀元, *alias:HY]1.1.1", '@CE', "01-01-01^Jewish"],
+ ]]
+ end
+
+ module CalendarTypes
+
+ #
+ # Jewish Calendar
+ #
+ class Jewish < TableBased
+
+ include Lunar
+
+ private
+
+ # オブジェクトの正規化
+ def _normalize(args=[], options={})
+ @label = 'Jewish::Jewish'
+
+ # Default Parameters
+ Rational
+ @epoch_in_CE ||= 1
+ @origin_of_MSC ||= 3761
+ @origin_of_LSC ||= 1721300 + Rational( 9415, 98496)
+ @mean_month ||= 29 + Rational(261307, 492480)
+ @leap_period ||= 19
+ @leap_number ||= 7
+ @leap_base ||= 1
+
+ # Derived Parameters
+ @no_leap_number = @leap_period - @leap_number
+ @date_shift = @mean_month / @leap_period
+ @mean_year = 12 * @mean_month + @leap_number * @date_shift
+
+ # Month & Day Index
+ @indices ||= [
+ When.Index('Jewish::Month', {:branch=>{-1=>When.Resource('_m:Jewish::IntercalaryMonth::*')[0],
+ 1=>When.Resource('_m:Jewish::IntercalaryMonth::*')[1]}}),
+ When::Coordinates::DefaultDayIndex
+ ]
+
+ # Month & Day Arrangement
+ @rule_table ||= {
+ 353 => {'Length'=>[30,29,29,29] + [30,29]*4, 'IDs'=>'1,2,3,4,5,6,7,8,9,10,11,12' },
+ 354 => {'Length'=>[30,29,30,29] + [30,29]*4, 'IDs'=>'1,2,3,4,5,6,7,8,9,10,11,12' },
+ 355 => {'Length'=>[30,30,30,29] + [30,29]*4, 'IDs'=>'1,2,3,4,5,6,7,8,9,10,11,12' },
+ 383 => {'Length'=>[30,29,29,29,30] + [30,29]*4, 'IDs'=>'1,2,3,4,5,6*,6=,7,8,9,10,11,12'},
+ 384 => {'Length'=>[30,29,30,29,30] + [30,29]*4, 'IDs'=>'1,2,3,4,5,6*,6=,7,8,9,10,11,12'},
+ 385 => {'Length'=>[30,30,30,29,30] + [30,29]*4, 'IDs'=>'1,2,3,4,5,6*,6=,7,8,9,10,11,12'}
+ }
+
+ super
+ end
+
+ # 年初の通日
+ #
+ # @param [Array<Numeric>] date ( 年 )
+ #
+ # @return [Integer] 年初の通日
+ #
+ def _sdn_(date)
+ y = +date[0]
+ g = (((y + @leap_base) % @leap_period) * @no_leap_number) % @leap_period
+ sdn, f = (y * @mean_year + g * @date_shift + @origin_of_LSC).divmod(1)
+
+ case sdn % 7
+ when 2,4,6 # Wed, Fri, Sun
+ sdn += 1
+ when 0 # Mon
+ sdn += 1 if ((f >= Rational(23269, 25920)) && (g > 11))
+ when 1 # Tue
+ sdn += 2 if ((f >= Rational( 1367, 2160)) && (g > 6))
+ else # Thu, Sat
+ end
+ return sdn
+ end
+ end
+ end
+end