@@ -29,18 +29,33 @@ public function inRange($value, $offset)
29
29
30
30
public function inStep ($ value , $ offset )
31
31
{
32
- if (\strpos ($ offset , '*/ ' ) !== false || \strpos ($ offset , '0/ ' ) !== false ) {
33
- $ parts = \explode ('/ ' , $ offset , 2 );
32
+ $ parts = \explode ('/ ' , $ offset , 2 );
33
+
34
+ if (empty ($ parts [1 ])) {
35
+ return false ;
36
+ }
34
37
38
+ if (\strpos ($ offset , '*/ ' ) !== false || \strpos ($ offset , '0/ ' ) !== false ) {
35
39
return $ value % $ parts [1 ] === 0 ;
36
40
}
37
41
38
42
$ parts = \explode ('/ ' , $ offset , 2 );
39
43
$ subparts = \explode ('- ' , $ parts [0 ], 2 ) + [1 => $ value ];
40
44
41
- return ($ subparts [0 ] <= $ value && $ value <= $ subparts [1 ] && $ parts [1 ])
42
- ? \in_array ($ value , \range ($ subparts [0 ], $ subparts [1 ], $ parts [1 ]))
43
- : false ;
45
+ return $ this ->inStepRange ($ value , $ subparts [0 ], $ subparts [1 ], $ parts [1 ]);
46
+ }
47
+
48
+ public function inStepRange ($ value , $ start , $ end , $ step )
49
+ {
50
+ if (($ start + $ step ) > $ end ) {
51
+ return false ;
52
+ }
53
+
54
+ if ($ start <= $ value && $ value <= $ end ) {
55
+ return \in_array ($ value , \range ($ start , $ end , $ step ));
56
+ }
57
+
58
+ return false ;
44
59
}
45
60
46
61
/**
0 commit comments