when_easter 0.2.4 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +14 -0
- data/Gemfile.lock +40 -0
- data/LICENSE.txt +20 -0
- data/README.md +20 -2
- data/Rakefile +50 -16
- data/VERSION +1 -1
- data/bin/find_distance +5 -0
- data/bin/when_easter +2 -2
- data/bin/when_greek_easter +2 -2
- data/bin/when_roman_easter +2 -2
- data/features/step_definitions/when_easter_steps.rb +68 -0
- data/features/support/env.rb +13 -0
- data/features/when_easter.feature +54 -0
- data/lib/when_easter.rb +64 -66
- data/spec/spec_helper.rb +12 -0
- data/spec/when_easter_spec.rb +9 -0
- data/when_easter.gemspec +30 -38
- metadata +97 -45
- data/doc/Rakefile.html +0 -110
- data/doc/VERSION.html +0 -88
- data/doc/WhenEaster.html +0 -380
- data/doc/bin/when_easter.html +0 -56
- data/doc/bin/when_greek_easter.html +0 -56
- data/doc/bin/when_roman_easter.html +0 -56
- data/doc/created.rid +0 -7
- data/doc/images/brick.png +0 -0
- data/doc/images/brick_link.png +0 -0
- data/doc/images/bug.png +0 -0
- data/doc/images/bullet_black.png +0 -0
- data/doc/images/bullet_toggle_minus.png +0 -0
- data/doc/images/bullet_toggle_plus.png +0 -0
- data/doc/images/date.png +0 -0
- data/doc/images/find.png +0 -0
- data/doc/images/loadingAnimation.gif +0 -0
- data/doc/images/macFFBgHack.png +0 -0
- data/doc/images/package.png +0 -0
- data/doc/images/page_green.png +0 -0
- data/doc/images/page_white_text.png +0 -0
- data/doc/images/page_white_width.png +0 -0
- data/doc/images/plugin.png +0 -0
- data/doc/images/ruby.png +0 -0
- data/doc/images/tag_green.png +0 -0
- data/doc/images/wrench.png +0 -0
- data/doc/images/wrench_orange.png +0 -0
- data/doc/images/zoom.png +0 -0
- data/doc/index.html +0 -68
- data/doc/js/darkfish.js +0 -116
- data/doc/js/jquery.js +0 -32
- data/doc/js/quicksearch.js +0 -114
- data/doc/js/thickbox-compressed.js +0 -10
- data/doc/lib/when_easter_rb.html +0 -52
- data/doc/rdoc.css +0 -759
data/Gemfile
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
source "http://rubygems.org"
|
2
|
+
# Add dependencies required to use your gem here.
|
3
|
+
# Example:
|
4
|
+
# gem "activesupport", ">= 2.3.5"
|
5
|
+
|
6
|
+
# Add dependencies to develop your gem here.
|
7
|
+
# Include everything needed to run rake, tests, features, etc.
|
8
|
+
group :development do
|
9
|
+
gem "rspec", "~> 2.6.0"
|
10
|
+
gem "cucumber", ">= 0"
|
11
|
+
gem "bundler", "~> 1.0.0"
|
12
|
+
gem "jeweler", "~> 1.6.3"
|
13
|
+
gem "rcov", ">= 0"
|
14
|
+
end
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
builder (3.0.0)
|
5
|
+
cucumber (1.0.1)
|
6
|
+
builder (>= 2.1.2)
|
7
|
+
diff-lcs (>= 1.1.2)
|
8
|
+
gherkin (~> 2.4.5)
|
9
|
+
json (>= 1.4.6)
|
10
|
+
term-ansicolor (>= 1.0.5)
|
11
|
+
diff-lcs (1.1.2)
|
12
|
+
gherkin (2.4.5)
|
13
|
+
json (>= 1.4.6)
|
14
|
+
git (1.2.5)
|
15
|
+
jeweler (1.6.4)
|
16
|
+
bundler (~> 1.0)
|
17
|
+
git (>= 1.2.5)
|
18
|
+
rake
|
19
|
+
json (1.5.3)
|
20
|
+
rake (0.9.2)
|
21
|
+
rcov (0.9.9)
|
22
|
+
rspec (2.6.0)
|
23
|
+
rspec-core (~> 2.6.0)
|
24
|
+
rspec-expectations (~> 2.6.0)
|
25
|
+
rspec-mocks (~> 2.6.0)
|
26
|
+
rspec-core (2.6.4)
|
27
|
+
rspec-expectations (2.6.0)
|
28
|
+
diff-lcs (~> 1.1.2)
|
29
|
+
rspec-mocks (2.6.0)
|
30
|
+
term-ansicolor (1.0.5)
|
31
|
+
|
32
|
+
PLATFORMS
|
33
|
+
ruby
|
34
|
+
|
35
|
+
DEPENDENCIES
|
36
|
+
bundler (~> 1.0.0)
|
37
|
+
cucumber
|
38
|
+
jeweler (~> 1.6.3)
|
39
|
+
rcov
|
40
|
+
rspec (~> 2.6.0)
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2011 Michał Nierebiński
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
CHANGED
@@ -2,18 +2,21 @@
|
|
2
2
|
|
3
3
|
Ever wondered when will Easter (or Passover, if you prefer) be next year? No worries, use when_easter!
|
4
4
|
|
5
|
+
It's still being developed and refactored, so beware ;) Binaries work well though.
|
5
6
|
### Install
|
6
7
|
$ gem install when_easter
|
7
8
|
|
8
9
|
### Use
|
9
10
|
|
10
11
|
$ when_easter
|
11
|
-
In the year
|
12
|
-
In the year
|
12
|
+
In the year 2011, the Roman Easter is on 24 April.
|
13
|
+
In the year 2011, the Greek Easter is on 24 April.
|
14
|
+
In the year 2010 the distance between Roman and Greek Easter is 0 week(s).
|
13
15
|
|
14
16
|
$ when_easter 2010
|
15
17
|
In the year 2010, the Roman Easter is on 04 April.
|
16
18
|
In the year 2010, the Greek Easter is on 04 April.
|
19
|
+
In the year 2010 the distance between Roman and Greek Easter is 0 week(s).
|
17
20
|
|
18
21
|
If you want to find only one date, you can also try
|
19
22
|
|
@@ -21,7 +24,22 @@ If you want to find only one date, you can also try
|
|
21
24
|
or
|
22
25
|
|
23
26
|
$ when_greek_easter
|
27
|
+
|
28
|
+
and also
|
29
|
+
|
30
|
+
$ find_distance
|
31
|
+
|
32
|
+
If you wish, you can also use WhenEaster::EasterCalendar class and its methods to fetch the dates only
|
33
|
+
|
24
34
|
|
35
|
+
roman_date = WhenEaster::EasterCalendar.find_roman_easter_date(2010)
|
36
|
+
greek date is similiar - you can get it by replacing roman with greek
|
37
|
+
|
38
|
+
And get
|
39
|
+
|
40
|
+
=> Sun Apr 21 00:00:00 +0200 2019
|
41
|
+
A Date object
|
42
|
+
|
25
43
|
### License
|
26
44
|
|
27
45
|
Released under the MIT license.
|
data/Rakefile
CHANGED
@@ -1,20 +1,54 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
require 'rubygems'
|
2
|
-
require '
|
4
|
+
require 'bundler'
|
3
5
|
begin
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
6
|
+
Bundler.setup(:default, :development)
|
7
|
+
rescue Bundler::BundlerError => e
|
8
|
+
$stderr.puts e.message
|
9
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
10
|
+
exit e.status_code
|
11
|
+
end
|
12
|
+
require 'rake'
|
13
|
+
|
14
|
+
require 'jeweler'
|
15
|
+
Jeweler::Tasks.new do |gem|
|
16
|
+
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
17
|
+
gem.name = "when_easter"
|
18
|
+
gem.homepage = "http://github.com/Loyolny/when_easter"
|
19
|
+
gem.license = "MIT"
|
20
|
+
gem.summary = %Q{Get the date of Roman and Greek Easter}
|
21
|
+
gem.description = %Q{A tool that calculates the dates of Roman and Greek Easter.}
|
22
|
+
gem.email = "michal@nierebinski.pl"
|
23
|
+
gem.authors = ["Michał Nierebiński"]
|
24
|
+
gem.date = File.utime(0,0,'VERSION')
|
25
|
+
# dependencies defined in Gemfile
|
26
|
+
end
|
27
|
+
Jeweler::RubygemsDotOrgTasks.new
|
28
|
+
|
29
|
+
require 'rspec/core'
|
30
|
+
require 'rspec/core/rake_task'
|
31
|
+
RSpec::Core::RakeTask.new(:spec) do |spec|
|
32
|
+
spec.pattern = FileList['spec/**/*_spec.rb']
|
33
|
+
end
|
34
|
+
|
35
|
+
RSpec::Core::RakeTask.new(:rcov) do |spec|
|
36
|
+
spec.pattern = 'spec/**/*_spec.rb'
|
37
|
+
spec.rcov = true
|
38
|
+
end
|
39
|
+
|
40
|
+
require 'cucumber/rake/task'
|
41
|
+
Cucumber::Rake::Task.new(:features)
|
42
|
+
|
43
|
+
task :default => :spec
|
44
|
+
|
45
|
+
require 'rake/rdoctask'
|
46
|
+
Rake::RDocTask.new do |rdoc|
|
47
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
48
|
+
|
49
|
+
rdoc.rdoc_dir = 'rdoc'
|
50
|
+
rdoc.title = "when_easter #{version}"
|
51
|
+
rdoc.rdoc_files.include('README*')
|
52
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
19
53
|
end
|
20
54
|
#Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].sort.each { |ext| load ext }
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.3.0
|
data/bin/find_distance
ADDED
data/bin/when_easter
CHANGED
data/bin/when_greek_easter
CHANGED
data/bin/when_roman_easter
CHANGED
@@ -0,0 +1,68 @@
|
|
1
|
+
Given /^an easter_calendar with no date specified$/ do
|
2
|
+
@easter_calendar = WhenEaster::EasterCalendar.new
|
3
|
+
end
|
4
|
+
|
5
|
+
Given /^year (\d+)$/ do |year|
|
6
|
+
@given_year = year
|
7
|
+
end
|
8
|
+
|
9
|
+
Given /^an easter_calendar$/ do
|
10
|
+
@easter_calendar = WhenEaster::EasterCalendar.new(@given_year)
|
11
|
+
end
|
12
|
+
When /^I ask for the year$/ do
|
13
|
+
@year = @easter_calendar.year
|
14
|
+
end
|
15
|
+
When /^I find roman easter$/ do
|
16
|
+
@roman_date = @easter_calendar.class.find_roman_easter_date(@easter_calendar.year)
|
17
|
+
end
|
18
|
+
When /^I find greek easter$/ do
|
19
|
+
@greek_date = @easter_calendar.class.find_greek_easter_date(@easter_calendar.year)
|
20
|
+
end
|
21
|
+
Then /^I should see year (\d+) in an easter_calendar$/ do |year|
|
22
|
+
@year.should == year.to_i
|
23
|
+
end
|
24
|
+
|
25
|
+
Then /^I should see "([^"]*)" in the output$/ do |date|
|
26
|
+
@date.to_s.should == date
|
27
|
+
end
|
28
|
+
|
29
|
+
When /^I ask for roman easter date$/ do
|
30
|
+
@roman_date = @easter_calendar.find_roman
|
31
|
+
end
|
32
|
+
|
33
|
+
When /^I ask for greek easter date$/ do
|
34
|
+
@greek_date = @easter_calendar.find_greek
|
35
|
+
end
|
36
|
+
|
37
|
+
Then /^I should see "([^"]*)"$/ do |easter_date|
|
38
|
+
@date.should == easter_date
|
39
|
+
end
|
40
|
+
Then /^I should see roman easter date "([^"]*)" in the output$/ do |date|
|
41
|
+
@roman_date.to_s.should == date
|
42
|
+
end
|
43
|
+
|
44
|
+
Then /^I should see greek easter date "([^"]*)" in the output$/ do |date|
|
45
|
+
@greek_date.to_s.should == date
|
46
|
+
end
|
47
|
+
|
48
|
+
When /^I ask for distance between easters$/ do
|
49
|
+
@distance = @easter_calendar.find_distance
|
50
|
+
end
|
51
|
+
|
52
|
+
Then /^I should see a distance in weeks as "([^"]*)"$/ do |distance|
|
53
|
+
@distance.should == distance
|
54
|
+
end
|
55
|
+
Then /^I should see correct Roman date: "([^"]*)"$/ do |date|
|
56
|
+
@roman_date.to_s.should == date
|
57
|
+
end
|
58
|
+
|
59
|
+
Then /^I should see correct Greek date: "([^"]*)"$/ do |date|
|
60
|
+
@greek_date.to_s.should == date
|
61
|
+
end
|
62
|
+
|
63
|
+
When /^I ask for complete easter information$/ do
|
64
|
+
@roman_date = @easter_calendar.find_roman
|
65
|
+
@greek_date = @easter_calendar.find_greek
|
66
|
+
@distance = @easter_calendar.find_distance
|
67
|
+
end
|
68
|
+
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'bundler'
|
2
|
+
begin
|
3
|
+
Bundler.setup(:default, :development)
|
4
|
+
rescue Bundler::BundlerError => e
|
5
|
+
$stderr.puts e.message
|
6
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
7
|
+
exit e.status_code
|
8
|
+
end
|
9
|
+
|
10
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../lib')
|
11
|
+
require 'when_easter'
|
12
|
+
|
13
|
+
require 'rspec/expectations'
|
@@ -0,0 +1,54 @@
|
|
1
|
+
Feature: EasterCalendar returns date
|
2
|
+
|
3
|
+
In order to find liturgical date
|
4
|
+
As a common churchgoer
|
5
|
+
I want an easter_calendar to find easter date
|
6
|
+
|
7
|
+
Scenario: easter_calendar sets default year
|
8
|
+
Given an easter_calendar with no date specified
|
9
|
+
When I ask for the year
|
10
|
+
Then I should see year 2011 in an easter_calendar
|
11
|
+
|
12
|
+
Scenario: easter_calendar sets given year
|
13
|
+
Given year 2016
|
14
|
+
And an easter_calendar
|
15
|
+
When I ask for the year
|
16
|
+
Then I should see year 2016 in an easter_calendar
|
17
|
+
|
18
|
+
Scenario: easter_calendar finds roman easter date
|
19
|
+
Given year 2016
|
20
|
+
And an easter_calendar
|
21
|
+
When I find roman easter
|
22
|
+
Then I should see roman easter date "Sun Mar 27 00:00:00 +0100 2016" in the output
|
23
|
+
|
24
|
+
Scenario: easter_calendar finds greek easter date
|
25
|
+
Given year 2017
|
26
|
+
And an easter_calendar
|
27
|
+
When I find greek easter
|
28
|
+
Then I should see greek easter date "Sun Apr 16 00:00:00 +0200 2017" in the output
|
29
|
+
|
30
|
+
Scenario: easter_calendar prints out the roman easter date
|
31
|
+
Given year 2016
|
32
|
+
And an easter_calendar
|
33
|
+
When I ask for roman easter date
|
34
|
+
Then I should see correct Roman date: "In the year 2016 the Roman Easter is on 27 March."
|
35
|
+
|
36
|
+
Scenario: easter_calendar prints out the greek easter date
|
37
|
+
Given year 2017
|
38
|
+
And an easter_calendar
|
39
|
+
When I ask for greek easter date
|
40
|
+
Then I should see correct Greek date: "In the year 2017 the Greek Easter is on 16 April."
|
41
|
+
|
42
|
+
Scenario: easter_calendar prints out the distance between greek and roman easter
|
43
|
+
Given year 2020
|
44
|
+
And an easter_calendar
|
45
|
+
When I ask for distance between easters
|
46
|
+
Then I should see a distance in weeks as "In the year 2020 the distance between Roman and Greek Easter is 1 week(s)."
|
47
|
+
|
48
|
+
Scenario: easter_calendar prints out full information about easter dates
|
49
|
+
Given year 2019
|
50
|
+
And an easter_calendar
|
51
|
+
When I ask for complete easter information
|
52
|
+
Then I should see correct Roman date: "In the year 2019 the Roman Easter is on 21 April."
|
53
|
+
And I should see correct Greek date: "In the year 2019 the Greek Easter is on 28 April."
|
54
|
+
And I should see a distance in weeks as "In the year 2019 the distance between Roman and Greek Easter is 1 week(s)."
|
data/lib/when_easter.rb
CHANGED
@@ -1,72 +1,70 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
end
|
16
|
-
|
17
|
-
## WhenEaster.find_greek
|
18
|
-
##=> In the year 2011, the Greek Easter is on 24 April.
|
19
|
-
def self.find_greek(year)
|
20
|
-
date = self.greek_easter(year)
|
21
|
-
return "In the year #{date.year}, the Greek Easter is on #{date.strftime("%d %B")}."
|
22
|
-
end
|
23
|
-
# WhenEaster.roman_easter
|
24
|
-
# => Sun Apr 24 00:00:00 +0200 2011
|
25
|
-
def self.roman_easter(year = nil)
|
26
|
-
year = Time.now.year if year.nil?
|
27
|
-
year = year.to_i if year.is_a?(String)
|
28
|
-
g = year % 19 +1
|
29
|
-
s = (year -1600) / 100 - (year-1600) / 400
|
30
|
-
l = (((year - 1400) / 100) * 8) / 25
|
31
|
-
|
32
|
-
p_2 = (3-11*g +s -l) % 30
|
33
|
-
if p_2 == 29 || (p_2 == 28 && g > 11)
|
34
|
-
p = p_2 -1
|
35
|
-
else
|
36
|
-
p= p_2
|
1
|
+
module WhenEaster
|
2
|
+
class EasterCalendar
|
3
|
+
|
4
|
+
attr_reader :year
|
5
|
+
def initialize(year = nil)
|
6
|
+
@year = Time.now.year if year.nil?
|
7
|
+
@year = year if year.is_a?(Integer)
|
8
|
+
@year = year.to_i if year.is_a?(String)
|
9
|
+
end
|
10
|
+
def distance_in_weeks
|
11
|
+
((self.class.find_greek_easter_date(year) - self.class.find_roman_easter_date(year))/3600/24/7).to_i
|
12
|
+
end
|
13
|
+
def find
|
14
|
+
find_roman+"\n"+find_greek+"\n"+find_distance
|
37
15
|
end
|
38
16
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
p_3 = (80 + p) % 7
|
43
|
-
x_2 = d_2 - p_3
|
44
|
-
|
45
|
-
x = (x_2 -1) % 7 +1
|
46
|
-
e = p+x
|
47
|
-
|
48
|
-
if e < 11
|
49
|
-
Time.local(year,3,e+21)
|
50
|
-
else
|
51
|
-
Time.local(year,4,e-10)
|
17
|
+
def find_roman
|
18
|
+
"In the year #{@year} the Roman Easter is on #{self.class.find_roman_easter_date(@year).strftime("%d %B")}."
|
52
19
|
end
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
20
|
+
def find_greek
|
21
|
+
"In the year #{@year} the Greek Easter is on #{self.class.find_greek_easter_date(@year).strftime("%d %B")}."
|
22
|
+
end
|
23
|
+
def find_distance
|
24
|
+
"In the year #{@year} the distance between Roman and Greek Easter is #{distance_in_weeks} week(s)."
|
25
|
+
end
|
26
|
+
# => Sun Apr 24 00:00:00 +0200 2011
|
27
|
+
def self.find_roman_easter_date(year)
|
28
|
+
g = year % 19 +1
|
29
|
+
s = (year -1600) / 100 - (year-1600) / 400
|
30
|
+
l = (((year - 1400) / 100) * 8) / 25
|
31
|
+
|
32
|
+
p_2 = (3-11*g +s -l) % 30
|
33
|
+
if p_2 == 29 || (p_2 == 28 && g > 11)
|
34
|
+
p = p_2 -1
|
35
|
+
else
|
36
|
+
p= p_2
|
37
|
+
end
|
38
|
+
|
39
|
+
d= (year + year / 4 - year / 100 + year / 400) % 7
|
40
|
+
d_2 = (8-d) % 7
|
41
|
+
|
42
|
+
p_3 = (80 + p) % 7
|
43
|
+
x_2 = d_2 - p_3
|
44
|
+
|
45
|
+
x = (x_2 -1) % 7 +1
|
46
|
+
e = p+x
|
47
|
+
|
48
|
+
if e < 11
|
49
|
+
Time.local(year,3,e+21)
|
50
|
+
else
|
51
|
+
Time.local(year,4,e-10)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# => Sun Apr 24 00:00:00 +0200 2011
|
56
|
+
def self.find_greek_easter_date(year)
|
57
|
+
a = year % 19
|
58
|
+
b = year % 4
|
59
|
+
c = year % 7
|
60
|
+
d = (19 * a + 16) % 30
|
61
|
+
e = (2 * b + 4 * c + 6 * d) % 7;
|
62
|
+
easter = 3 + d + e;
|
63
|
+
if easter <= 30
|
64
|
+
Time.local(year, 4, easter)
|
65
|
+
else
|
66
|
+
Time.local(year, 5, (easter - 30))
|
67
|
+
end
|
70
68
|
end
|
71
69
|
end
|
72
70
|
end
|