@@ -29,18 +29,33 @@ public function inRange($value, $offset)
2929
3030 public function inStep ($ value , $ offset )
3131 {
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+ }
3437
38+ if (\strpos ($ offset , '*/ ' ) !== false || \strpos ($ offset , '0/ ' ) !== false ) {
3539 return $ value % $ parts [1 ] === 0 ;
3640 }
3741
3842 $ parts = \explode ('/ ' , $ offset , 2 );
3943 $ subparts = \explode ('- ' , $ parts [0 ], 2 ) + [1 => $ value ];
4044
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 ;
4459 }
4560
4661 /**
0 commit comments