]> scripts.mit.edu Git - autoinstalls/mediawiki.git/blob - includes/composer/ComposerVersionNormalizer.php
MediaWiki 1.30.2-scripts
[autoinstalls/mediawiki.git] / includes / composer / ComposerVersionNormalizer.php
1 <?php
2
3 /**
4  * @licence GNU GPL v2+
5  * @author Jeroen De Dauw < jeroendedauw@gmail.com >
6  */
7 class ComposerVersionNormalizer {
8
9         /**
10          * Ensures there is a dash in between the version and the stability suffix.
11          *
12          * Examples:
13          * - 1.23RC => 1.23-RC
14          * - 1.23alpha => 1.23-alpha
15          * - 1.23alpha3 => 1.23-alpha3
16          * - 1.23-beta => 1.23-beta
17          *
18          * @param string $version
19          *
20          * @return string
21          * @throws InvalidArgumentException
22          */
23         public function normalizeSuffix( $version ) {
24                 if ( !is_string( $version ) ) {
25                         throw new InvalidArgumentException( '$version must be a string' );
26                 }
27
28                 return preg_replace( '/^(\d[\d\.]*)([a-zA-Z]+)(\d*)$/', '$1-$2$3', $version, 1 );
29         }
30
31         /**
32          * Ensures the version has four levels.
33          * Version suffixes are supported, as long as they start with a dash.
34          *
35          * Examples:
36          * - 1.19 => 1.19.0.0
37          * - 1.19.2.3 => 1.19.2.3
38          * - 1.19-alpha => 1.19.0.0-alpha
39          * - 1337 => 1337.0.0.0
40          *
41          * @param string $version
42          *
43          * @return string
44          * @throws InvalidArgumentException
45          */
46         public function normalizeLevelCount( $version ) {
47                 if ( !is_string( $version ) ) {
48                         throw new InvalidArgumentException( '$version must be a string' );
49                 }
50
51                 $dashPosition = strpos( $version, '-' );
52
53                 if ( $dashPosition !== false ) {
54                         $suffix = substr( $version, $dashPosition );
55                         $version = substr( $version, 0, $dashPosition );
56                 }
57
58                 $version = implode( '.', array_pad( explode( '.', $version ), 4, '0' ) );
59
60                 if ( $dashPosition !== false ) {
61                         $version .= $suffix;
62                 }
63
64                 return $version;
65         }
66 }