Merge pull request 'pull latest readability-php via composer' (#42) from niehztog/tt-rss:update-readability into master

Reviewed-on: https://git.tt-rss.org/fox/tt-rss/pulls/42
This commit is contained in:
fox 2021-08-18 07:51:19 +03:00
commit 28eafa2bcd
415 changed files with 304 additions and 309 deletions

View File

@ -1,5 +1,5 @@
{ {
"require": { "require": {
"andreskrey/readability.php": "^2.1" "fivefilters/readability.php": "^2.1"
} }
} }

View File

@ -4,19 +4,19 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "2a37019b27f1590966011df3bf6e135b", "content-hash": "985d4bb2caa672420e280a0b2bbb4715",
"packages": [ "packages": [
{ {
"name": "andreskrey/readability.php", "name": "fivefilters/readability.php",
"version": "v2.1.0", "version": "v2.1.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/andreskrey/readability.php.git", "url": "https://github.com/fivefilters/readability.php.git",
"reference": "7617a912b6c527909168f5d41d263792f171c42a" "reference": "7617a912b6c527909168f5d41d263792f171c42a"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/andreskrey/readability.php/zipball/7617a912b6c527909168f5d41d263792f171c42a", "url": "https://api.github.com/repos/fivefilters/readability.php/zipball/7617a912b6c527909168f5d41d263792f171c42a",
"reference": "7617a912b6c527909168f5d41d263792f171c42a", "reference": "7617a912b6c527909168f5d41d263792f171c42a",
"shasum": "" "shasum": ""
}, },
@ -58,23 +58,22 @@
"readability" "readability"
], ],
"support": { "support": {
"issues": "https://github.com/andreskrey/readability.php/issues", "source": "https://github.com/fivefilters/readability.php/tree/v2.1.0"
"source": "https://github.com/andreskrey/readability.php/tree/v2.1.0"
}, },
"time": "2019-07-22T21:42:25+00:00" "time": "2019-07-22T21:42:25+00:00"
}, },
{ {
"name": "psr/log", "name": "psr/log",
"version": "1.1.3", "version": "1.1.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/php-fig/log.git", "url": "https://github.com/php-fig/log.git",
"reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" "reference": "d49695b909c3b7628b6289db5479a1c204601f11"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
"reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", "reference": "d49695b909c3b7628b6289db5479a1c204601f11",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -98,7 +97,7 @@
"authors": [ "authors": [
{ {
"name": "PHP-FIG", "name": "PHP-FIG",
"homepage": "http://www.php-fig.org/" "homepage": "https://www.php-fig.org/"
} }
], ],
"description": "Common interface for logging libraries", "description": "Common interface for logging libraries",
@ -109,9 +108,9 @@
"psr-3" "psr-3"
], ],
"support": { "support": {
"source": "https://github.com/php-fig/log/tree/1.1.3" "source": "https://github.com/php-fig/log/tree/1.1.4"
}, },
"time": "2020-03-23T09:12:05+00:00" "time": "2021-05-03T11:20:27+00:00"
} }
], ],
"packages-dev": [], "packages-dev": [],

View File

@ -311,10 +311,8 @@ class ClassLoader
spl_autoload_register(array($this, 'loadClass'), true, $prepend); spl_autoload_register(array($this, 'loadClass'), true, $prepend);
if (null === $this->vendorDir) { if (null === $this->vendorDir) {
return; //no-op
} } elseif ($prepend) {
if ($prepend) {
self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders; self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
} else { } else {
unset(self::$registeredLoaders[$this->vendorDir]); unset(self::$registeredLoaders[$this->vendorDir]);

View File

@ -1,28 +1,28 @@
<?php <?php
/*
* This file is part of Composer.
*
* (c) Nils Adermann <naderman@naderman.de>
* Jordi Boggiano <j.boggiano@seld.be>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Composer; namespace Composer;
use Composer\Autoload\ClassLoader; use Composer\Autoload\ClassLoader;
use Composer\Semver\VersionParser; use Composer\Semver\VersionParser;
/**
* This class is copied in every Composer installed project and available to all
*
* To require it's presence, you can require `composer-runtime-api ^2.0`
*/
class InstalledVersions class InstalledVersions
{ {
private static $installed = array ( private static $installed = array (
'root' => 'root' =>
array ( array (
'pretty_version' => 'dev-master', 'pretty_version' => 'dev-master',
@ -30,7 +30,7 @@ private static $installed = array (
'aliases' => 'aliases' =>
array ( array (
), ),
'reference' => '1baf8c521785ab4dc8f474fdd772280737c7e254', 'reference' => 'a73e3bec45c5523910c711cf882976b71781ac9e',
'name' => '__root__', 'name' => '__root__',
), ),
'versions' => 'versions' =>
@ -42,9 +42,9 @@ private static $installed = array (
'aliases' => 'aliases' =>
array ( array (
), ),
'reference' => '1baf8c521785ab4dc8f474fdd772280737c7e254', 'reference' => 'a73e3bec45c5523910c711cf882976b71781ac9e',
), ),
'andreskrey/readability.php' => 'fivefilters/readability.php' =>
array ( array (
'pretty_version' => 'v2.1.0', 'pretty_version' => 'v2.1.0',
'version' => '2.1.0.0', 'version' => '2.1.0.0',
@ -55,247 +55,248 @@ private static $installed = array (
), ),
'psr/log' => 'psr/log' =>
array ( array (
'pretty_version' => '1.1.3', 'pretty_version' => '1.1.4',
'version' => '1.1.3.0', 'version' => '1.1.4.0',
'aliases' => 'aliases' =>
array ( array (
), ),
'reference' => '0f73288fd15629204f9d42b7055f72dacbe811fc', 'reference' => 'd49695b909c3b7628b6289db5479a1c204601f11',
), ),
), ),
); );
private static $canGetVendors; private static $canGetVendors;
private static $installedByVendor = array(); private static $installedByVendor = array();
/**
* Returns a list of all package names which are present, either by being installed, replaced or provided
*
* @return string[]
* @psalm-return list<string>
*/
public static function getInstalledPackages()
{
$packages = array();
foreach (self::getInstalled() as $installed) {
$packages[] = array_keys($installed['versions']);
}
if (1 === \count($packages)) {
return $packages[0];
}
return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
}
/**
* Checks whether the given package is installed
*
* This also returns true if the package name is provided or replaced by another package
*
* @param string $packageName
* @return bool
*/
public static function isInstalled($packageName)
{
foreach (self::getInstalled() as $installed) {
if (isset($installed['versions'][$packageName])) {
return true;
}
}
return false;
}
/**
* Checks whether the given package satisfies a version constraint
*
* e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call:
*
* Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3')
*
* @param VersionParser $parser Install composer/semver to have access to this class and functionality
* @param string $packageName
* @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package
*
* @return bool
*/
public static function satisfies(VersionParser $parser, $packageName, $constraint)
{
$constraint = $parser->parseConstraints($constraint);
$provided = $parser->parseConstraints(self::getVersionRanges($packageName));
public static function getInstalledPackages() return $provided->matches($constraint);
{ }
$packages = array();
foreach (self::getInstalled() as $installed) { /**
$packages[] = array_keys($installed['versions']); * Returns a version constraint representing all the range(s) which are installed for a given package
} *
* It is easier to use this via isInstalled() with the $constraint argument if you need to check
* whether a given version of a package is installed, and not just whether it exists
if (1 === \count($packages)) { *
return $packages[0]; * @param string $packageName
} * @return string Version constraint usable with composer/semver
*/
return array_keys(array_flip(\call_user_func_array('array_merge', $packages))); public static function getVersionRanges($packageName)
} {
foreach (self::getInstalled() as $installed) {
if (!isset($installed['versions'][$packageName])) {
continue;
}
$ranges = array();
if (isset($installed['versions'][$packageName]['pretty_version'])) {
$ranges[] = $installed['versions'][$packageName]['pretty_version'];
}
public static function isInstalled($packageName) if (array_key_exists('aliases', $installed['versions'][$packageName])) {
{ $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
foreach (self::getInstalled() as $installed) { }
if (isset($installed['versions'][$packageName])) { if (array_key_exists('replaced', $installed['versions'][$packageName])) {
return true; $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
} }
} if (array_key_exists('provided', $installed['versions'][$packageName])) {
$ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
return false; }
}
return implode(' || ', $ranges);
}
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
}
/**
* @param string $packageName
* @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
*/
public static function getVersion($packageName)
{
foreach (self::getInstalled() as $installed) {
if (!isset($installed['versions'][$packageName])) {
public static function satisfies(VersionParser $parser, $packageName, $constraint) continue;
{ }
$constraint = $parser->parseConstraints($constraint);
$provided = $parser->parseConstraints(self::getVersionRanges($packageName)); if (!isset($installed['versions'][$packageName]['version'])) {
return null;
return $provided->matches($constraint); }
}
return $installed['versions'][$packageName]['version'];
}
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
}
/**
* @param string $packageName
* @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
*/
public static function getVersionRanges($packageName) public static function getPrettyVersion($packageName)
{ {
foreach (self::getInstalled() as $installed) { foreach (self::getInstalled() as $installed) {
if (!isset($installed['versions'][$packageName])) { if (!isset($installed['versions'][$packageName])) {
continue; continue;
} }
$ranges = array(); if (!isset($installed['versions'][$packageName]['pretty_version'])) {
if (isset($installed['versions'][$packageName]['pretty_version'])) { return null;
$ranges[] = $installed['versions'][$packageName]['pretty_version']; }
}
if (array_key_exists('aliases', $installed['versions'][$packageName])) { return $installed['versions'][$packageName]['pretty_version'];
$ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']); }
}
if (array_key_exists('replaced', $installed['versions'][$packageName])) { throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
$ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']); }
}
if (array_key_exists('provided', $installed['versions'][$packageName])) { /**
$ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']); * @param string $packageName
} * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference
*/
return implode(' || ', $ranges); public static function getReference($packageName)
} {
foreach (self::getInstalled() as $installed) {
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); if (!isset($installed['versions'][$packageName])) {
} continue;
}
if (!isset($installed['versions'][$packageName]['reference'])) {
return null;
}
public static function getVersion($packageName)
{ return $installed['versions'][$packageName]['reference'];
foreach (self::getInstalled() as $installed) { }
if (!isset($installed['versions'][$packageName])) {
continue; throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
} }
if (!isset($installed['versions'][$packageName]['version'])) { /**
return null; * @return array
} * @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[]}
*/
return $installed['versions'][$packageName]['version']; public static function getRootPackage()
} {
$installed = self::getInstalled();
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
} return $installed[0]['root'];
}
/**
* Returns the raw installed.php data for custom implementations
*
public static function getPrettyVersion($packageName) * @return array[]
{ * @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[]}, versions: list<string, array{pretty_version: ?string, version: ?string, aliases: ?string[], reference: ?string, replaced: ?string[], provided: ?string[]}>}
foreach (self::getInstalled() as $installed) { */
if (!isset($installed['versions'][$packageName])) { public static function getRawData()
continue; {
} return self::$installed;
}
if (!isset($installed['versions'][$packageName]['pretty_version'])) {
return null; /**
} * Lets you reload the static array from another file
*
return $installed['versions'][$packageName]['pretty_version']; * This is only useful for complex integrations in which a project needs to use
} * this class but then also needs to execute another project's autoloader in process,
* and wants to ensure both projects have access to their version of installed.php.
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); *
} * A typical case would be PHPUnit, where it would need to make sure it reads all
* the data it needs from this class, then call reload() with
* `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure
* the project in which it runs can then also use this class safely, without
* interference between PHPUnit's dependencies and the project's dependencies.
*
public static function getReference($packageName) * @param array[] $data A vendor/composer/installed.php data set
{ * @return void
foreach (self::getInstalled() as $installed) { *
if (!isset($installed['versions'][$packageName])) { * @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[]}, versions: list<string, array{pretty_version: ?string, version: ?string, aliases: ?string[], reference: ?string, replaced: ?string[], provided: ?string[]}>} $data
continue; */
} public static function reload($data)
{
if (!isset($installed['versions'][$packageName]['reference'])) { self::$installed = $data;
return null; self::$installedByVendor = array();
} }
return $installed['versions'][$packageName]['reference']; /**
} * @return array[]
*/
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); private static function getInstalled()
} {
if (null === self::$canGetVendors) {
self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
}
$installed = array();
public static function getRootPackage()
{ if (self::$canGetVendors) {
$installed = self::getInstalled(); // @phpstan-ignore-next-line
foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
return $installed[0]['root']; if (isset(self::$installedByVendor[$vendorDir])) {
} $installed[] = self::$installedByVendor[$vendorDir];
} elseif (is_file($vendorDir.'/composer/installed.php')) {
$installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
}
}
}
$installed[] = self::$installed;
public static function getRawData()
{ return $installed;
return self::$installed; }
}
public static function reload($data)
{
self::$installed = $data;
self::$installedByVendor = array();
}
private static function getInstalled()
{
if (null === self::$canGetVendors) {
self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
}
$installed = array();
if (self::$canGetVendors) {
foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
if (isset(self::$installedByVendor[$vendorDir])) {
$installed[] = self::$installedByVendor[$vendorDir];
} elseif (is_file($vendorDir.'/composer/installed.php')) {
$installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
}
}
}
$installed[] = self::$installed;
return $installed;
}
} }

View File

@ -1,4 +1,3 @@
Copyright (c) Nils Adermann, Jordi Boggiano Copyright (c) Nils Adermann, Jordi Boggiano
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
@ -18,4 +17,3 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE. THE SOFTWARE.

View File

@ -6,6 +6,6 @@ $vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir); $baseDir = dirname($vendorDir);
return array( return array(
'andreskrey\\Readability\\' => array($vendorDir . '/andreskrey/readability.php/src'), 'andreskrey\\Readability\\' => array($vendorDir . '/fivefilters/readability.php/src'),
'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'), 'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'),
); );

View File

@ -20,7 +20,7 @@ class ComposerStaticInitb44cc79a0eaef9cd9c2f2ac697cbe9c0
public static $prefixDirsPsr4 = array ( public static $prefixDirsPsr4 = array (
'andreskrey\\Readability\\' => 'andreskrey\\Readability\\' =>
array ( array (
0 => __DIR__ . '/..' . '/andreskrey/readability.php/src', 0 => __DIR__ . '/..' . '/fivefilters/readability.php/src',
), ),
'Psr\\Log\\' => 'Psr\\Log\\' =>
array ( array (

View File

@ -1,17 +1,17 @@
{ {
"packages": [ "packages": [
{ {
"name": "andreskrey/readability.php", "name": "fivefilters/readability.php",
"version": "v2.1.0", "version": "v2.1.0",
"version_normalized": "2.1.0.0", "version_normalized": "2.1.0.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/andreskrey/readability.php.git", "url": "https://github.com/fivefilters/readability.php.git",
"reference": "7617a912b6c527909168f5d41d263792f171c42a" "reference": "7617a912b6c527909168f5d41d263792f171c42a"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/andreskrey/readability.php/zipball/7617a912b6c527909168f5d41d263792f171c42a", "url": "https://api.github.com/repos/fivefilters/readability.php/zipball/7617a912b6c527909168f5d41d263792f171c42a",
"reference": "7617a912b6c527909168f5d41d263792f171c42a", "reference": "7617a912b6c527909168f5d41d263792f171c42a",
"shasum": "" "shasum": ""
}, },
@ -55,30 +55,29 @@
"readability" "readability"
], ],
"support": { "support": {
"issues": "https://github.com/andreskrey/readability.php/issues", "source": "https://github.com/fivefilters/readability.php/tree/v2.1.0"
"source": "https://github.com/andreskrey/readability.php/tree/v2.1.0"
}, },
"install-path": "../andreskrey/readability.php" "install-path": "../fivefilters/readability.php"
}, },
{ {
"name": "psr/log", "name": "psr/log",
"version": "1.1.3", "version": "1.1.4",
"version_normalized": "1.1.3.0", "version_normalized": "1.1.4.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/php-fig/log.git", "url": "https://github.com/php-fig/log.git",
"reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" "reference": "d49695b909c3b7628b6289db5479a1c204601f11"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
"reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", "reference": "d49695b909c3b7628b6289db5479a1c204601f11",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=5.3.0" "php": ">=5.3.0"
}, },
"time": "2020-03-23T09:12:05+00:00", "time": "2021-05-03T11:20:27+00:00",
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
@ -98,7 +97,7 @@
"authors": [ "authors": [
{ {
"name": "PHP-FIG", "name": "PHP-FIG",
"homepage": "http://www.php-fig.org/" "homepage": "https://www.php-fig.org/"
} }
], ],
"description": "Common interface for logging libraries", "description": "Common interface for logging libraries",
@ -109,7 +108,7 @@
"psr-3" "psr-3"
], ],
"support": { "support": {
"source": "https://github.com/php-fig/log/tree/1.1.3" "source": "https://github.com/php-fig/log/tree/1.1.4"
}, },
"install-path": "../psr/log" "install-path": "../psr/log"
} }

View File

@ -6,7 +6,7 @@
'aliases' => 'aliases' =>
array ( array (
), ),
'reference' => '1baf8c521785ab4dc8f474fdd772280737c7e254', 'reference' => 'a73e3bec45c5523910c711cf882976b71781ac9e',
'name' => '__root__', 'name' => '__root__',
), ),
'versions' => 'versions' =>
@ -18,9 +18,9 @@
'aliases' => 'aliases' =>
array ( array (
), ),
'reference' => '1baf8c521785ab4dc8f474fdd772280737c7e254', 'reference' => 'a73e3bec45c5523910c711cf882976b71781ac9e',
), ),
'andreskrey/readability.php' => 'fivefilters/readability.php' =>
array ( array (
'pretty_version' => 'v2.1.0', 'pretty_version' => 'v2.1.0',
'version' => '2.1.0.0', 'version' => '2.1.0.0',
@ -31,12 +31,12 @@
), ),
'psr/log' => 'psr/log' =>
array ( array (
'pretty_version' => '1.1.3', 'pretty_version' => '1.1.4',
'version' => '1.1.3.0', 'version' => '1.1.4.0',
'aliases' => 'aliases' =>
array ( array (
), ),
'reference' => '0f73288fd15629204f9d42b7055f72dacbe811fc', 'reference' => 'd49695b909c3b7628b6289db5479a1c204601f11',
), ),
), ),
); );

View File

@ -195,7 +195,7 @@ class Readability
// No luck after removing flags, just return the longest text we found during the different loops // No luck after removing flags, just return the longest text we found during the different loops
usort($this->attempts, function ($a, $b) { usort($this->attempts, function ($a, $b) {
return $b['textLength'] - $a['textLength']; return $a['textLength'] < $b['textLength'];
}); });
// But first check if we actually have something // But first check if we actually have something

Some files were not shown because too many files have changed in this diff Show More