Passed
Push — addMultipleObservanceShifts ( 90c241...269624 )
by Andreas
01:49
created
src/GregorianWeekday.php 1 patch
Indentation   +125 added lines, -125 removed lines patch added patch discarded remove patch
@@ -20,133 +20,133 @@
 block discarded – undo
20 20
 
21 21
 final class GregorianWeekday
22 22
 {
23
-	/** @var string */
24
-	private $value;
23
+    /** @var string */
24
+    private $value;
25 25
 
26
-	/** @var array<string, GregorianWeekday> */
27
-	private static $instances = [];
26
+    /** @var array<string, GregorianWeekday> */
27
+    private static $instances = [];
28 28
 
29
-	private const MONDAY = 'monday';
30
-	private const TUESDAY = 'tuesday';
31
-	private const WEDNESDAY = 'wednesday';
32
-	private const THURSDAY = 'thursday';
33
-	private const FRIDAY = 'friday';
34
-	private const SATURDAY = 'saturday';
35
-	private const SUNDAY = 'sunday';
29
+    private const MONDAY = 'monday';
30
+    private const TUESDAY = 'tuesday';
31
+    private const WEDNESDAY = 'wednesday';
32
+    private const THURSDAY = 'thursday';
33
+    private const FRIDAY = 'friday';
34
+    private const SATURDAY = 'saturday';
35
+    private const SUNDAY = 'sunday';
36 36
 
37
-	private function __construct(string $value)
37
+    private function __construct(string $value)
38 38
     {
39
-		$this->value = $value;
40
-	}
41
-
42
-	public function getValue(): string
43
-	{
44
-		return $this->value;
45
-	}
46
-
47
-	public static function monday(): self
48
-	{
49
-		if (! isset(self::$instances[self::MONDAY])) {
50
-			self::$instances[self::MONDAY] = new self(self::MONDAY);
51
-		}
52
-
53
-		return self::$instances[self::MONDAY];
54
-	}
55
-
56
-	public static function tuesday(): self
57
-	{
58
-		if (! isset(self::$instances[self::TUESDAY])) {
59
-			self::$instances[self::TUESDAY] = new self(self::TUESDAY);
60
-		}
61
-
62
-		return self::$instances[self::TUESDAY];
63
-	}
64
-
65
-	public static function wednesday(): self
66
-	{
67
-		if (! isset(self::$instances[self::WEDNESDAY])) {
68
-			self::$instances[self::WEDNESDAY] = new self(self::WEDNESDAY);
69
-		}
70
-
71
-		return self::$instances[self::WEDNESDAY];
72
-	}
73
-
74
-	public static function thursday(): self
75
-	{
76
-		if (! isset(self::$instances[self::THURSDAY])) {
77
-			self::$instances[self::THURSDAY] = new self(self::THURSDAY);
78
-		}
79
-
80
-		return self::$instances[self::THURSDAY];
81
-	}
82
-
83
-	public static function friday(): self
84
-	{
85
-		if (! isset(self::$instances[self::FRIDAY])) {
86
-			self::$instances[self::FRIDAY] = new self(self::FRIDAY);
87
-		}
88
-
89
-		return self::$instances[self::FRIDAY];
90
-	}
91
-
92
-	public static function saturday(): self
93
-	{
94
-		if (! isset(self::$instances[self::SATURDAY])) {
95
-			self::$instances[self::SATURDAY] = new self(self::SATURDAY);
96
-		}
97
-
98
-		return self::$instances[self::SATURDAY];
99
-	}
100
-
101
-	public static function sunday(): self
102
-	{
103
-		if (! isset(self::$instances[self::SUNDAY])) {
104
-			self::$instances[self::SUNDAY] = new self(self::SUNDAY);
105
-		}
106
-
107
-		return self::$instances[self::SUNDAY];
108
-	}
109
-
110
-	public static function fromString(string $weekday): self
111
-	{
112
-		if (! method_exists(self::class, strtolower($weekday))) {
113
-			throw new RuntimeException('Weekday not found');
114
-		}
115
-
116
-		/** @var GregorianWeekday $gregorianWeekday */
117
-		$gregorianWeekday = [self::class, strtolower($weekday)]();
118
-
119
-		return $gregorianWeekday;
120
-	}
121
-
122
-	public static function fromDateTimeInterface(DateTimeInterface $date): self
123
-	{
124
-		return self::fromString($date->format('l'));
125
-	}
126
-
127
-	public static function fromIntlWeekday(int $weekday): self
128
-	{
129
-		$mapper = [
130
-			IntlCalendar::DOW_SUNDAY    => 'sunday',
131
-			IntlCalendar::DOW_MONDAY    => 'monday',
132
-			IntlCalendar::DOW_TUESDAY   => 'tuesday',
133
-			IntlCalendar::DOW_WEDNESDAY => 'wednesday',
134
-			IntlCalendar::DOW_THURSDAY  => 'thursday',
135
-			IntlCalendar::DOW_FRIDAY    => 'friday',
136
-			IntlCalendar::DOW_SATURDAY  => 'saturday',
137
-		];
138
-		if (! isset($mapper[$weekday])) {
139
-			throw new UnexpectedValueException(sprintf(
140
-				'IntlCalendar weekday %s could not be resolved',
141
-				$weekday
142
-			));
143
-		}
144
-
145
-		return self::fromString($mapper[$weekday]);
146
-	}
147
-
148
-	public function __toString(): string
149
-	{
150
-		return $this->getValue();
151
-	}
39
+        $this->value = $value;
40
+    }
41
+
42
+    public function getValue(): string
43
+    {
44
+        return $this->value;
45
+    }
46
+
47
+    public static function monday(): self
48
+    {
49
+        if (! isset(self::$instances[self::MONDAY])) {
50
+            self::$instances[self::MONDAY] = new self(self::MONDAY);
51
+        }
52
+
53
+        return self::$instances[self::MONDAY];
54
+    }
55
+
56
+    public static function tuesday(): self
57
+    {
58
+        if (! isset(self::$instances[self::TUESDAY])) {
59
+            self::$instances[self::TUESDAY] = new self(self::TUESDAY);
60
+        }
61
+
62
+        return self::$instances[self::TUESDAY];
63
+    }
64
+
65
+    public static function wednesday(): self
66
+    {
67
+        if (! isset(self::$instances[self::WEDNESDAY])) {
68
+            self::$instances[self::WEDNESDAY] = new self(self::WEDNESDAY);
69
+        }
70
+
71
+        return self::$instances[self::WEDNESDAY];
72
+    }
73
+
74
+    public static function thursday(): self
75
+    {
76
+        if (! isset(self::$instances[self::THURSDAY])) {
77
+            self::$instances[self::THURSDAY] = new self(self::THURSDAY);
78
+        }
79
+
80
+        return self::$instances[self::THURSDAY];
81
+    }
82
+
83
+    public static function friday(): self
84
+    {
85
+        if (! isset(self::$instances[self::FRIDAY])) {
86
+            self::$instances[self::FRIDAY] = new self(self::FRIDAY);
87
+        }
88
+
89
+        return self::$instances[self::FRIDAY];
90
+    }
91
+
92
+    public static function saturday(): self
93
+    {
94
+        if (! isset(self::$instances[self::SATURDAY])) {
95
+            self::$instances[self::SATURDAY] = new self(self::SATURDAY);
96
+        }
97
+
98
+        return self::$instances[self::SATURDAY];
99
+    }
100
+
101
+    public static function sunday(): self
102
+    {
103
+        if (! isset(self::$instances[self::SUNDAY])) {
104
+            self::$instances[self::SUNDAY] = new self(self::SUNDAY);
105
+        }
106
+
107
+        return self::$instances[self::SUNDAY];
108
+    }
109
+
110
+    public static function fromString(string $weekday): self
111
+    {
112
+        if (! method_exists(self::class, strtolower($weekday))) {
113
+            throw new RuntimeException('Weekday not found');
114
+        }
115
+
116
+        /** @var GregorianWeekday $gregorianWeekday */
117
+        $gregorianWeekday = [self::class, strtolower($weekday)]();
118
+
119
+        return $gregorianWeekday;
120
+    }
121
+
122
+    public static function fromDateTimeInterface(DateTimeInterface $date): self
123
+    {
124
+        return self::fromString($date->format('l'));
125
+    }
126
+
127
+    public static function fromIntlWeekday(int $weekday): self
128
+    {
129
+        $mapper = [
130
+            IntlCalendar::DOW_SUNDAY    => 'sunday',
131
+            IntlCalendar::DOW_MONDAY    => 'monday',
132
+            IntlCalendar::DOW_TUESDAY   => 'tuesday',
133
+            IntlCalendar::DOW_WEDNESDAY => 'wednesday',
134
+            IntlCalendar::DOW_THURSDAY  => 'thursday',
135
+            IntlCalendar::DOW_FRIDAY    => 'friday',
136
+            IntlCalendar::DOW_SATURDAY  => 'saturday',
137
+        ];
138
+        if (! isset($mapper[$weekday])) {
139
+            throw new UnexpectedValueException(sprintf(
140
+                'IntlCalendar weekday %s could not be resolved',
141
+                $weekday
142
+            ));
143
+        }
144
+
145
+        return self::fromString($mapper[$weekday]);
146
+    }
147
+
148
+    public function __toString(): string
149
+    {
150
+        return $this->getValue();
151
+    }
152 152
 }
Please login to merge, or discard this patch.
src/SwapDirection.php 1 patch
Indentation   +44 added lines, -44 removed lines patch added patch discarded remove patch
@@ -12,52 +12,52 @@
 block discarded – undo
12 12
 
13 13
 final class SwapDirection
14 14
 {
15
-	/** @var string */
16
-	private $value;
15
+    /** @var string */
16
+    private $value;
17 17
 
18
-	/** @var array<string, self> */
19
-	private static $instances = [];
18
+    /** @var array<string, self> */
19
+    private static $instances = [];
20 20
 
21
-	private const FORWARD = 'forward';
22
-	private const REWIND = 'rewind';
21
+    private const FORWARD = 'forward';
22
+    private const REWIND = 'rewind';
23 23
 
24
-	private function __construct(string $value)
24
+    private function __construct(string $value)
25 25
     {
26
-		$this->value = $value;
27
-	}
28
-
29
-	public function getValue(): string
30
-	{
31
-		return $this->value;
32
-	}
33
-
34
-	public function getDateTimeDirection(): string
35
-	{
36
-		switch ($this->value) {
37
-			case self::REWIND:
38
-				return 'previous';
39
-			case self::FORWARD:
40
-				return 'next';
41
-			default:
42
-				return '';
43
-		}
44
-	}
45
-
46
-	public static function forward(): self
47
-	{
48
-		if (! isset(self::$instances[self::FORWARD])) {
49
-			self::$instances[self::FORWARD] = new self(self::FORWARD);
50
-		}
51
-
52
-		return self::$instances[self::FORWARD];
53
-	}
54
-
55
-	public static function rewind(): self
56
-	{
57
-		if (! isset(self::$instances[self::REWIND])) {
58
-			self::$instances[self::REWIND] = new self(self::REWIND);
59
-		}
60
-
61
-		return self::$instances[self::REWIND];
62
-	}
26
+        $this->value = $value;
27
+    }
28
+
29
+    public function getValue(): string
30
+    {
31
+        return $this->value;
32
+    }
33
+
34
+    public function getDateTimeDirection(): string
35
+    {
36
+        switch ($this->value) {
37
+            case self::REWIND:
38
+                return 'previous';
39
+            case self::FORWARD:
40
+                return 'next';
41
+            default:
42
+                return '';
43
+        }
44
+    }
45
+
46
+    public static function forward(): self
47
+    {
48
+        if (! isset(self::$instances[self::FORWARD])) {
49
+            self::$instances[self::FORWARD] = new self(self::FORWARD);
50
+        }
51
+
52
+        return self::$instances[self::FORWARD];
53
+    }
54
+
55
+    public static function rewind(): self
56
+    {
57
+        if (! isset(self::$instances[self::REWIND])) {
58
+            self::$instances[self::REWIND] = new self(self::REWIND);
59
+        }
60
+
61
+        return self::$instances[self::REWIND];
62
+    }
63 63
 }
Please login to merge, or discard this patch.
src/IteratorItem/SwapDecorator.php 1 patch
Indentation   +64 added lines, -64 removed lines patch added patch discarded remove patch
@@ -21,68 +21,68 @@
 block discarded – undo
21 21
 
22 22
 class SwapDecorator implements HolidayIteratorItemInterface
23 23
 {
24
-	/** @var HolidayIteratorItemInterface  */
25
-	private $rule;
26
-
27
-	/** @var CalendarDay  */
28
-	private $day;
29
-
30
-	/** @var SwapRule[]  */
31
-	private $swapRules;
32
-
33
-	public function __construct(HolidayIteratorItemInterface $rule, CalendarDay $day, SwapRule ...$swapRules)
34
-	{
35
-		$this->rule = $rule;
36
-		$this->day = $day;
37
-		$this->swapRules = $swapRules;
38
-	}
39
-
40
-	public function dateMatches(DateTimeInterface $date): bool
41
-	{
42
-		$year = (int) $date->format('Y');
43
-		$weekday = GregorianWeekday::fromIntlWeekday($this->day->getWeekdayForGregorianYear($year));
44
-		foreach ($this->swapRules as $rule) {
45
-			if ($this->ruleMatches($rule, $weekday)) {
46
-				return $this->isModifiedDate($date, $rule->getSwapToDay(), $rule->getDirection());
47
-			}
48
-		}
49
-
50
-		return $this->rule->dateMatches($date);
51
-	}
52
-
53
-	public function getName(): string
54
-	{
55
-		return $this->rule->getName();
56
-	}
57
-
58
-	public function isHoliday(): bool
59
-	{
60
-		return $this->rule->isHoliday();
61
-	}
62
-
63
-	private function ruleMatches(SwapRule $rule, GregorianWeekday $weekday): bool
64
-	{
65
-		return in_array($weekday, $rule->getSwapWhenDays(), true);
66
-	}
67
-
68
-	private function isModifiedDate(DateTimeInterface $dateTime, GregorianWeekday $modifiedDay, SwapDirection $direction): bool
69
-	{
70
-		$cal = $this->day->getCalendar();
71
-		$cal = CalendarDay::setGregorianYearForDate((int) $dateTime->format('Y'), $cal);
72
-		$day = $cal->toDateTime();
73
-		$day->modify($direction->getDateTimeDirection() . ' ' . $modifiedDay);
74
-		$cal->setTime($day->getTimestamp() * 1000);
75
-		$cal2 = $this->day->getCalendar();
76
-		$cal2->setTime($dateTime->getTimestamp() * 1000);
77
-
78
-		if ($this->day->hasYearSet() && $cal->get(IntlCalendar::FIELD_YEAR) !== $cal2->get(IntlCalendar::FIELD_YEAR)) {
79
-			return false;
80
-		}
81
-
82
-		if ($cal->get(IntlCalendar::FIELD_MONTH) !== $cal2->get(IntlCalendar::FIELD_MONTH)) {
83
-			return false;
84
-		}
85
-
86
-		return $cal->get(IntlCalendar::FIELD_DAY_OF_MONTH) === $cal2->get(IntlCalendar::FIELD_DAY_OF_MONTH);
87
-	}
24
+    /** @var HolidayIteratorItemInterface  */
25
+    private $rule;
26
+
27
+    /** @var CalendarDay  */
28
+    private $day;
29
+
30
+    /** @var SwapRule[]  */
31
+    private $swapRules;
32
+
33
+    public function __construct(HolidayIteratorItemInterface $rule, CalendarDay $day, SwapRule ...$swapRules)
34
+    {
35
+        $this->rule = $rule;
36
+        $this->day = $day;
37
+        $this->swapRules = $swapRules;
38
+    }
39
+
40
+    public function dateMatches(DateTimeInterface $date): bool
41
+    {
42
+        $year = (int) $date->format('Y');
43
+        $weekday = GregorianWeekday::fromIntlWeekday($this->day->getWeekdayForGregorianYear($year));
44
+        foreach ($this->swapRules as $rule) {
45
+            if ($this->ruleMatches($rule, $weekday)) {
46
+                return $this->isModifiedDate($date, $rule->getSwapToDay(), $rule->getDirection());
47
+            }
48
+        }
49
+
50
+        return $this->rule->dateMatches($date);
51
+    }
52
+
53
+    public function getName(): string
54
+    {
55
+        return $this->rule->getName();
56
+    }
57
+
58
+    public function isHoliday(): bool
59
+    {
60
+        return $this->rule->isHoliday();
61
+    }
62
+
63
+    private function ruleMatches(SwapRule $rule, GregorianWeekday $weekday): bool
64
+    {
65
+        return in_array($weekday, $rule->getSwapWhenDays(), true);
66
+    }
67
+
68
+    private function isModifiedDate(DateTimeInterface $dateTime, GregorianWeekday $modifiedDay, SwapDirection $direction): bool
69
+    {
70
+        $cal = $this->day->getCalendar();
71
+        $cal = CalendarDay::setGregorianYearForDate((int) $dateTime->format('Y'), $cal);
72
+        $day = $cal->toDateTime();
73
+        $day->modify($direction->getDateTimeDirection() . ' ' . $modifiedDay);
74
+        $cal->setTime($day->getTimestamp() * 1000);
75
+        $cal2 = $this->day->getCalendar();
76
+        $cal2->setTime($dateTime->getTimestamp() * 1000);
77
+
78
+        if ($this->day->hasYearSet() && $cal->get(IntlCalendar::FIELD_YEAR) !== $cal2->get(IntlCalendar::FIELD_YEAR)) {
79
+            return false;
80
+        }
81
+
82
+        if ($cal->get(IntlCalendar::FIELD_MONTH) !== $cal2->get(IntlCalendar::FIELD_MONTH)) {
83
+            return false;
84
+        }
85
+
86
+        return $cal->get(IntlCalendar::FIELD_DAY_OF_MONTH) === $cal2->get(IntlCalendar::FIELD_DAY_OF_MONTH);
87
+    }
88 88
 }
Please login to merge, or discard this patch.