Code Duplication    Length = 130-130 lines in 3 locations

src/Stefanius/SpecialDates/CommonDates/FirstEasterDay.php 1 location

@@ 13-142 (lines=130) @@
10
 *
11
 * @package Stefanius\SpecialDates\CommonDates
12
 */
13
class FirstEasterDay extends AbstractSpecialDate
14
{
15
    protected function generate()
16
    {
17
        $this->bankHoliday = true;
18
        $this->description = 'Eerste paasdag';
19
20
        $g = $this->calculateGNumber();
21
        $c = $this->calculateCNumber();
22
        $x = $this->calculateXNumber($c);
23
        $y = $this->calculateYNumber($c);
24
        $z = $this->calculateZNumber($x);
25
        $e = $this->calculateENumber($g, $y, $x);
26
        $n = $this->calculateNNumber($e);
27
        $p = $this->calculatePNumber($z, $n);
28
29
        if ($p > 31) {
30
            $p -= 31;
31
            $this->setupDateTimeObjects($this->generateDateTime($this->year, 4, $p));
32
        } else {
33
            $this->setupDateTimeObjects($this->generateDateTime($this->year, 3, $p));
34
        }
35
    }
36
37
    /**
38
     * Deel het jaartal door 19, neem de rest, en tel er 1 bij op (zoals Dionysius). Noem dit getal G. Voor het jaar 1991 geldt G = 16.
39
     *
40
     * @return int
41
     */
42
    protected function calculateGNumber()
43
    {
44
        return ($this->year % 19) + 1;
45
    }
46
47
    /**
48
     * Geheeldeel het jaartal door 100 en tel daar 1 bij op. Noem dit getal C. Voor het jaar 1991 geldt C = 20.
49
     *
50
     * @return int
51
     */
52
    protected function calculateCNumber()
53
    {
54
        return (int)floor($this->year / 100) + 1;
55
    }
56
57
    /**
58
     * Vermenigvuldig C met 3, geheeldeel het resultaat door 4 en trek er 12 van af. Noem dit getal X. Voor de twintigste en eenentwintigste eeuw geldt X = 3.
59
     *
60
     * @param int $c
61
     * @return float
62
     */
63
    protected function calculateXNumber(int $c)
64
    {
65
        return (($c * 3) / 4) - 12;
66
    }
67
68
    /**
69
     *  Neem 8 maal C, tel er 5 bij op, geheeldeel dit door 25 en trek er 5 vanaf. Noem dit getal Y. Voor de twintigste en eenentwintigste eeuw geldt: Y = 1.
70
     *
71
     * @param int $c
72
     * @return float
73
     */
74
    protected function calculateYNumber(int $c)
75
    {
76
        return ((($c * 8) + 4) / 25) - 5;
77
    }
78
79
    /**
80
     * Vermenigvuldig het jaartal met 5, geheeldeel de uitkomst door 4, trek er X en 10 vanaf, en noem dit getal Z. Voor 1991 geldt: Z = 2475.
81
     *
82
     * @param int $x
83
     * @return float
84
     */
85
    protected function calculateZNumber(int $x)
86
    {
87
        return ((($this->year * 5) / 4) - $x) - 10;
88
    }
89
90
    /**
91
     * 11 maal G + 20 + Y. Trek daarvan X af, geheeldeel het resultaat door 30 en noem de rest E. Als E gelijk is aan 24, of als E gelijk is aan 25 en het gulden getal is groter dan 11, tel dan 1 bij E op. De Epacta voor 1991 is 14.
92
     *
93
     * @param int $x
94
     * @return float
95
     */
96
    protected function calculateENumber(int $g, int $y, int $x)
97
    {
98
        $e = (((($g * 11) + 20) + $y) - $x) % 30;
99
100
        if (($e === 24) || ($e === 25 && $g > 11)) {
101
            $e++;
102
        }
103
104
        return $e;
105
    }
106
107
    /**
108
     * Trek E af van 44. Noem dit getal N. Als N kleiner is dan 21, tel er dan 30 bij op. Voor 1991 geldt: N = 30
109
     *
110
     * @param int $e
111
     *
112
     * @return int
113
     */
114
    protected function calculateNNumber(int $e)
115
    {
116
        $n = 44 - $e;
117
118
        if ($n < 21) {
119
            $n += 30;
120
        }
121
122
        return $n;
123
    }
124
125
    /**
126
     * Tel Z en N op. Geheeldeel het resultaat door 7 en trek de rest af van N+7. Noem dit getal P. Voor 1991 geldt: P = 31.
127
     *
128
     * @param int $z
129
     * @param int $n
130
     * @return int
131
     */
132
    protected function calculatePNumber(int $z, int $n)
133
    {
134
        return ($n + 7) - (($z + $n) % 7);
135
    }
136
137
    /**
138
139
140
    Paasdatum: Als P groter is dan 31, trek er dan 31 vanaf, en de paasdatum valt in april. Anders is de paasdag P in maart. Zo wordt voor 1991 gevonden 31 maart.
141
     */
142
}
143

src/Stefanius/SpecialDates/CommonDates/GoodFriday.php 1 location

@@ 13-142 (lines=130) @@
10
 *
11
 * @package Stefanius\SpecialDates\CommonDates
12
 */
13
class GoodFriday extends AbstractSpecialDate
14
{
15
    protected function generate()
16
    {
17
        $this->bankHoliday = true;
18
        $this->description = 'Goede vrijdag';
19
20
        $g = $this->calculateGNumber();
21
        $c = $this->calculateCNumber();
22
        $x = $this->calculateXNumber($c);
23
        $y = $this->calculateYNumber($c);
24
        $z = $this->calculateZNumber($x);
25
        $e = $this->calculateENumber($g, $y, $x);
26
        $n = $this->calculateNNumber($e);
27
        $p = $this->calculatePNumber($z, $n);
28
29
        if ($p > 31) {
30
            $p -= 31;
31
            $this->setupDateTimeObjects($this->generateDateTime($this->year, 4, $p)->modify('-2 days'));
32
        } else {
33
            $this->setupDateTimeObjects($this->generateDateTime($this->year, 3, $p)->modify('-2 days'));
34
        }
35
    }
36
37
    /**
38
     * Deel het jaartal door 19, neem de rest, en tel er 1 bij op (zoals Dionysius). Noem dit getal G. Voor het jaar 1991 geldt G = 16.
39
     *
40
     * @return int
41
     */
42
    protected function calculateGNumber()
43
    {
44
        return ($this->year % 19) + 1;
45
    }
46
47
    /**
48
     * Geheeldeel het jaartal door 100 en tel daar 1 bij op. Noem dit getal C. Voor het jaar 1991 geldt C = 20.
49
     *
50
     * @return int
51
     */
52
    protected function calculateCNumber()
53
    {
54
        return (int)floor($this->year / 100) + 1;
55
    }
56
57
    /**
58
     * Vermenigvuldig C met 3, geheeldeel het resultaat door 4 en trek er 12 van af. Noem dit getal X. Voor de twintigste en eenentwintigste eeuw geldt X = 3.
59
     *
60
     * @param int $c
61
     * @return float
62
     */
63
    protected function calculateXNumber(int $c)
64
    {
65
        return (($c * 3) / 4) - 12;
66
    }
67
68
    /**
69
     *  Neem 8 maal C, tel er 5 bij op, geheeldeel dit door 25 en trek er 5 vanaf. Noem dit getal Y. Voor de twintigste en eenentwintigste eeuw geldt: Y = 1.
70
     *
71
     * @param int $c
72
     * @return float
73
     */
74
    protected function calculateYNumber(int $c)
75
    {
76
        return ((($c * 8) + 4) / 25) - 5;
77
    }
78
79
    /**
80
     * Vermenigvuldig het jaartal met 5, geheeldeel de uitkomst door 4, trek er X en 10 vanaf, en noem dit getal Z. Voor 1991 geldt: Z = 2475.
81
     *
82
     * @param int $x
83
     * @return float
84
     */
85
    protected function calculateZNumber(int $x)
86
    {
87
        return ((($this->year * 5) / 4) - $x) - 10;
88
    }
89
90
    /**
91
     * 11 maal G + 20 + Y. Trek daarvan X af, geheeldeel het resultaat door 30 en noem de rest E. Als E gelijk is aan 24, of als E gelijk is aan 25 en het gulden getal is groter dan 11, tel dan 1 bij E op. De Epacta voor 1991 is 14.
92
     *
93
     * @param int $x
94
     * @return float
95
     */
96
    protected function calculateENumber(int $g, int $y, int $x)
97
    {
98
        $e = (((($g * 11) + 20) + $y) - $x) % 30;
99
100
        if (($e === 24) || ($e === 25 && $g > 11)) {
101
            $e++;
102
        }
103
104
        return $e;
105
    }
106
107
    /**
108
     * Trek E af van 44. Noem dit getal N. Als N kleiner is dan 21, tel er dan 30 bij op. Voor 1991 geldt: N = 30
109
     *
110
     * @param int $e
111
     *
112
     * @return int
113
     */
114
    protected function calculateNNumber(int $e)
115
    {
116
        $n = 44 - $e;
117
118
        if ($n < 21) {
119
            $n += 30;
120
        }
121
122
        return $n;
123
    }
124
125
    /**
126
     * Tel Z en N op. Geheeldeel het resultaat door 7 en trek de rest af van N+7. Noem dit getal P. Voor 1991 geldt: P = 31.
127
     *
128
     * @param int $z
129
     * @param int $n
130
     * @return int
131
     */
132
    protected function calculatePNumber(int $z, int $n)
133
    {
134
        return ($n + 7) - (($z + $n) % 7);
135
    }
136
137
    /**
138
139
140
    Paasdatum: Als P groter is dan 31, trek er dan 31 vanaf, en de paasdatum valt in april. Anders is de paasdag P in maart. Zo wordt voor 1991 gevonden 31 maart.
141
     */
142
}
143

src/Stefanius/SpecialDates/CommonDates/SecondEasterDay.php 1 location

@@ 13-142 (lines=130) @@
10
 *
11
 * @package Stefanius\SpecialDates\CommonDates
12
 */
13
class SecondEasterDay extends AbstractSpecialDate
14
{
15
    protected function generate()
16
    {
17
        $this->bankHoliday = true;
18
        $this->description = 'Tweede paasdag';
19
20
        $g = $this->calculateGNumber();
21
        $c = $this->calculateCNumber();
22
        $x = $this->calculateXNumber($c);
23
        $y = $this->calculateYNumber($c);
24
        $z = $this->calculateZNumber($x);
25
        $e = $this->calculateENumber($g, $y, $x);
26
        $n = $this->calculateNNumber($e);
27
        $p = $this->calculatePNumber($z, $n);
28
29
        if ($p > 31) {
30
            $p -= 31;
31
            $this->setupDateTimeObjects($this->generateDateTime($this->year, 4, $p)->modify("+1 day"));
32
        } else {
33
            $this->setupDateTimeObjects($this->generateDateTime($this->year, 3, $p)->modify("+1 day"));
34
        }
35
    }
36
37
    /**
38
     * Deel het jaartal door 19, neem de rest, en tel er 1 bij op (zoals Dionysius). Noem dit getal G. Voor het jaar 1991 geldt G = 16.
39
     *
40
     * @return int
41
     */
42
    protected function calculateGNumber()
43
    {
44
        return ($this->year % 19) + 1;
45
    }
46
47
    /**
48
     * Geheeldeel het jaartal door 100 en tel daar 1 bij op. Noem dit getal C. Voor het jaar 1991 geldt C = 20.
49
     *
50
     * @return int
51
     */
52
    protected function calculateCNumber()
53
    {
54
        return (int)floor($this->year / 100) + 1;
55
    }
56
57
    /**
58
     * Vermenigvuldig C met 3, geheeldeel het resultaat door 4 en trek er 12 van af. Noem dit getal X. Voor de twintigste en eenentwintigste eeuw geldt X = 3.
59
     *
60
     * @param int $c
61
     * @return float
62
     */
63
    protected function calculateXNumber(int $c)
64
    {
65
        return (($c * 3) / 4) - 12;
66
    }
67
68
    /**
69
     *  Neem 8 maal C, tel er 5 bij op, geheeldeel dit door 25 en trek er 5 vanaf. Noem dit getal Y. Voor de twintigste en eenentwintigste eeuw geldt: Y = 1.
70
     *
71
     * @param int $c
72
     * @return float
73
     */
74
    protected function calculateYNumber(int $c)
75
    {
76
        return ((($c * 8) + 4) / 25) - 5;
77
    }
78
79
    /**
80
     * Vermenigvuldig het jaartal met 5, geheeldeel de uitkomst door 4, trek er X en 10 vanaf, en noem dit getal Z. Voor 1991 geldt: Z = 2475.
81
     *
82
     * @param int $x
83
     * @return float
84
     */
85
    protected function calculateZNumber(int $x)
86
    {
87
        return ((($this->year * 5) / 4) - $x) - 10;
88
    }
89
90
    /**
91
     * 11 maal G + 20 + Y. Trek daarvan X af, geheeldeel het resultaat door 30 en noem de rest E. Als E gelijk is aan 24, of als E gelijk is aan 25 en het gulden getal is groter dan 11, tel dan 1 bij E op. De Epacta voor 1991 is 14.
92
     *
93
     * @param int $x
94
     * @return float
95
     */
96
    protected function calculateENumber(int $g, int $y, int $x)
97
    {
98
        $e = (((($g * 11) + 20) + $y) - $x) % 30;
99
100
        if (($e === 24) || ($e === 25 && $g > 11)) {
101
            $e++;
102
        }
103
104
        return $e;
105
    }
106
107
    /**
108
     * Trek E af van 44. Noem dit getal N. Als N kleiner is dan 21, tel er dan 30 bij op. Voor 1991 geldt: N = 30
109
     *
110
     * @param int $e
111
     *
112
     * @return int
113
     */
114
    protected function calculateNNumber(int $e)
115
    {
116
        $n = 44 - $e;
117
118
        if ($n < 21) {
119
            $n += 30;
120
        }
121
122
        return $n;
123
    }
124
125
    /**
126
     * Tel Z en N op. Geheeldeel het resultaat door 7 en trek de rest af van N+7. Noem dit getal P. Voor 1991 geldt: P = 31.
127
     *
128
     * @param int $z
129
     * @param int $n
130
     * @return int
131
     */
132
    protected function calculatePNumber(int $z, int $n)
133
    {
134
        return ($n + 7) - (($z + $n) % 7);
135
    }
136
137
    /**
138
139
140
    Paasdatum: Als P groter is dan 31, trek er dan 31 vanaf, en de paasdatum valt in april. Anders is de paasdag P in maart. Zo wordt voor 1991 gevonden 31 maart.
141
     */
142
}
143