Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F4090244
Semver.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
Semver.php
View Options
<?php
/*
* This file is part of composer/semver.
*
* (c) Composer <https://github.com/composer>
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
namespace
Composer\Semver
;
use
Composer\Semver\Constraint\Constraint
;
class
Semver
{
const
SORT_ASC
=
1
;
const
SORT_DESC
=
-
1
;
/** @var VersionParser */
private
static
$versionParser
;
/**
* Determine if given version satisfies given constraints.
*
* @param string $version
* @param string $constraints
*
* @return bool
*/
public
static
function
satisfies
(
$version
,
$constraints
)
{
if
(
null
===
self
::
$versionParser
)
{
self
::
$versionParser
=
new
VersionParser
();
}
$versionParser
=
self
::
$versionParser
;
$provider
=
new
Constraint
(
'=='
,
$versionParser
->
normalize
(
$version
));
$parsedConstraints
=
$versionParser
->
parseConstraints
(
$constraints
);
return
$parsedConstraints
->
matches
(
$provider
);
}
/**
* Return all versions that satisfy given constraints.
*
* @param string[] $versions
* @param string $constraints
*
* @return string[]
*/
public
static
function
satisfiedBy
(
array
$versions
,
$constraints
)
{
$versions
=
array_filter
(
$versions
,
function
(
$version
)
use
(
$constraints
)
{
return
Semver
::
satisfies
(
$version
,
$constraints
);
});
return
array_values
(
$versions
);
}
/**
* Sort given array of versions.
*
* @param string[] $versions
*
* @return string[]
*/
public
static
function
sort
(
array
$versions
)
{
return
self
::
usort
(
$versions
,
self
::
SORT_ASC
);
}
/**
* Sort given array of versions in reverse.
*
* @param string[] $versions
*
* @return string[]
*/
public
static
function
rsort
(
array
$versions
)
{
return
self
::
usort
(
$versions
,
self
::
SORT_DESC
);
}
/**
* @param string[] $versions
* @param int $direction
*
* @return string[]
*/
private
static
function
usort
(
array
$versions
,
$direction
)
{
if
(
null
===
self
::
$versionParser
)
{
self
::
$versionParser
=
new
VersionParser
();
}
$versionParser
=
self
::
$versionParser
;
$normalized
=
array
();
// Normalize outside of usort() scope for minor performance increase.
// Creates an array of arrays: [[normalized, key], ...]
foreach
(
$versions
as
$key
=>
$version
)
{
$normalizedVersion
=
$versionParser
->
normalize
(
$version
);
$normalizedVersion
=
$versionParser
->
normalizeDefaultBranch
(
$normalizedVersion
);
$normalized
[]
=
array
(
$normalizedVersion
,
$key
);
}
usort
(
$normalized
,
function
(
array
$left
,
array
$right
)
use
(
$direction
)
{
if
(
$left
[
0
]
===
$right
[
0
])
{
return
0
;
}
if
(
Comparator
::
lessThan
(
$left
[
0
],
$right
[
0
]))
{
return
-
$direction
;
}
return
$direction
;
});
// Recreate input array, using the original indexes which are now in sorted order.
$sorted
=
array
();
foreach
(
$normalized
as
$item
)
{
$sorted
[]
=
$versions
[
$item
[
1
]];
}
return
$sorted
;
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Aug 18 2026, 10:59 (5 w, 4 d ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
9b/39/3c68753a8126e9ecdf249b1d4d41
Default Alt Text
Semver.php (3 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment