cmd exp date
This commit is contained in:
parent
2280b7f4d6
commit
5d7e88c70e
@ -119,6 +119,8 @@ define('WAAI_TOKEN', '652548474f4e4');
|
||||
define('WAAI_INSTANCE', '65254894E4A88');
|
||||
define('SEND_WAAI_URL', 'https://waai.in/api/send');
|
||||
define('SEND_WAAI_GROUP_URL', 'https://waai.in/api/send_group');
|
||||
define('EXPIRAY_NOTIFY_TEMPLATE_EMAIL','EXPIRAY_NOTIFY_TEMPLATE_EMAIL');
|
||||
define('EXPIRAY_NOTIFY_TEMPLATE_WHATSAPP','EXPIRAY_NOTIFY_TEMPLATE_WHATSAPP');
|
||||
|
||||
|
||||
|
||||
|
||||
@ -122,6 +122,9 @@ $routes->get('print_address/(:num)', 'Invoice::print_address/$1');
|
||||
|
||||
|
||||
# Notifications Routes
|
||||
// $routes->get('controller/SubExpdetail/(:num)', 'YourController::SubExpdetail/$1');
|
||||
|
||||
$routes->cli("getExpCustomerDetail/(:num)",'Notifications::getExpCustomerDetail/$1');
|
||||
$routes->get('send_whatsapp_message/', 'Notifications::send_whatsapp_message');
|
||||
$routes->post('whatsapp_custom_notifications/', 'Notifications::whatsapp_custom_notifications');
|
||||
$routes->match(['post', 'get'], 'mail_custom_notifications', 'Notifications::mail_custom_notifications');
|
||||
|
||||
@ -43,62 +43,89 @@ abstract class BaseController extends Controller
|
||||
* The creation of dynamic property is deprecated in PHP 8.2.
|
||||
*/
|
||||
// protected $session;
|
||||
public $authData = [];
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
|
||||
{
|
||||
|
||||
// Do Not Edit This Line
|
||||
parent::initController($request, $response, $logger);
|
||||
$uri = $request->getUri();
|
||||
|
||||
// Preload any models, libraries, etc, here.
|
||||
|
||||
// E.g.: $this->session = \Config\Services::session();
|
||||
// Get the path or route from the URI
|
||||
$requestedRoute = $uri->getPath();
|
||||
$requestType = get_class($request);
|
||||
|
||||
if (php_sapi_name() === 'cli') {
|
||||
echo "This is a command-line request.";
|
||||
// echo $requestedRoute;
|
||||
} else {
|
||||
if ($requestedRoute !== '/login' && $requestedRoute !== '/authenticate') {
|
||||
|
||||
$this->authData = $this->session_log();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function render_page($viewpage, $data){
|
||||
helper('session');
|
||||
|
||||
$session_uid = get_logged_user_id();
|
||||
$session_uname = get_logged_name();
|
||||
if(!is_session_active()) {
|
||||
$route = base_url()."login";
|
||||
return redirect()->route($route);
|
||||
}
|
||||
|
||||
$auth_model = new AuthenticationModel();
|
||||
|
||||
$mergedData = array_merge($data, $this->authData);
|
||||
// print_r($mergedData );
|
||||
$mergedData['browser_title']= $mergedData['company_name'] . ' | ' . $mergedData['company_short_name'] . ' ' . $mergedData['page_name'];
|
||||
|
||||
$mergedData['heading']= $mergedData['page_name'] === "Dashboard" ? 'Welcome to ' . $mergedData['company_name'] : "";
|
||||
echo view('template/header.php', $mergedData );
|
||||
echo view('template/topbar.php', $mergedData);
|
||||
echo view($viewpage, $mergedData);
|
||||
echo view('template/footer.php', $mergedData);
|
||||
|
||||
$details = $auth_model->getheringDetailsForHeader($session_uid);
|
||||
$data['company_name'] = $details[0]['site_name'];
|
||||
$data['company_short_name'] = $details[0]['site_title'];
|
||||
$data['company_address'] = $details[0]['company_address'];
|
||||
$data['company_mobile_no'] = $details[0]['company_mobile_no'];
|
||||
$data['company_email'] = $details[0]['company_email'];
|
||||
$data['loggedin_person'] = $session_uname;
|
||||
$data['loggedin_person_id'] = $session_uid;
|
||||
|
||||
$data['loggedin_person_role'] = $details[0]['role'];
|
||||
$data['favicon'] = !empty($details[0]['favicon']) && file_exists(FCPATH."public/uploads/".$details[0]['favicon']) ? base_url("public/uploads/".$details[0]['favicon']) : base_url("public/uploads/default.ico");
|
||||
$data['profile_picture'] = !empty($details[0]['profile_picture']) && file_exists(FCPATH."public/uploads/".$details[0]['profile_picture']) ? base_url("public/uploads/" . $details[0]['profile_picture']) : base_url("public/uploads/avatar.png");
|
||||
$data['company_logo_small'] = !empty($details[0]['company_logo_small']) && file_exists(FCPATH."public/uploads/".$details[0]['company_logo_small']) ? base_url("public/uploads/" . $details[0]['company_logo_small']) : base_url("public/uploads/default_logo.png");
|
||||
$data['company_logo_large'] = !empty($details[0]['company_logo_large']) && file_exists(FCPATH."public/uploads/".$details[0]['company_logo_large']) ? base_url("public/uploads/" . $details[0]['company_logo_large']) : base_url("public/uploads/default.png");
|
||||
$data['browser_title'] = $data['company_name'] . ' | ' . $data['company_short_name'] . ' ' . $data['page_name'];
|
||||
$data['heading'] = $data['page_name'] === "Dashboard" ? 'Welcome to ' . $data['company_name'] : "";
|
||||
$data['loggedin_person'] = $session_uname;
|
||||
$session_bid = get_business_id();
|
||||
$data['bid'] = $session_bid;
|
||||
$data['footer_about'] = $details[0]['footer_about'];
|
||||
|
||||
echo view('template/header.php', $data);
|
||||
echo view('template/topbar.php', $data);
|
||||
echo view($viewpage, $data);
|
||||
echo view('template/footer.php', $data);
|
||||
|
||||
}
|
||||
public function session_log()
|
||||
{
|
||||
helper('session');
|
||||
|
||||
$session_uid = get_logged_user_id();
|
||||
$session_uname = get_logged_name();
|
||||
if(!is_session_active()) {
|
||||
|
||||
header("Location: " . base_url("login"));
|
||||
exit();
|
||||
}
|
||||
|
||||
// $header = view('template/header.php', $data);
|
||||
// $topbar = view('template/topbar.php', $data);
|
||||
// $content = view($viewpage, $data);
|
||||
// $footer = view('template/footer.php', $data);
|
||||
// return $header.$topbar.$content.$footer;
|
||||
$auth_model = new AuthenticationModel();
|
||||
|
||||
$details = $auth_model->getheringDetailsForHeader($session_uid);
|
||||
$data['company_name'] = $details[0]['site_name'];
|
||||
$data['company_short_name'] = $details[0]['site_title'];
|
||||
$data['company_address'] = $details[0]['company_address'];
|
||||
$data['company_mobile_no'] = $details[0]['company_mobile_no'];
|
||||
$data['company_email'] = $details[0]['company_email'];
|
||||
$data['loggedin_person'] = $session_uname;
|
||||
$data['loggedin_person_id'] = $session_uid;
|
||||
|
||||
$data['loggedin_person_role'] = $details[0]['role'];
|
||||
$data['favicon'] = !empty($details[0]['favicon']) && file_exists(FCPATH."public/uploads/".$details[0]['favicon']) ? base_url("public/uploads/".$details[0]['favicon']) : base_url("public/uploads/default.ico");
|
||||
$data['profile_picture'] = !empty($details[0]['profile_picture']) && file_exists(FCPATH."public/uploads/".$details[0]['profile_picture']) ? base_url("public/uploads/" . $details[0]['profile_picture']) : base_url("public/uploads/avatar.png");
|
||||
$data['company_logo_small'] = !empty($details[0]['company_logo_small']) && file_exists(FCPATH."public/uploads/".$details[0]['company_logo_small']) ? base_url("public/uploads/" . $details[0]['company_logo_small']) : base_url("public/uploads/default_logo.png");
|
||||
$data['company_logo_large'] = !empty($details[0]['company_logo_large']) && file_exists(FCPATH."public/uploads/".$details[0]['company_logo_large']) ? base_url("public/uploads/" . $details[0]['company_logo_large']) : base_url("public/uploads/default.png");
|
||||
|
||||
$data['loggedin_person'] = $session_uname;
|
||||
$session_bid = get_business_id();
|
||||
$data['bid'] = $session_bid;
|
||||
$data['footer_about'] = $details[0]['footer_about'];
|
||||
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -8,9 +8,11 @@ class Home extends BaseController
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
// echo "hwllo"
|
||||
helper('session');
|
||||
$session_role = get_user_role();
|
||||
$session_bid = get_business_id();
|
||||
|
||||
$data['page_name'] = 'Dashboard';
|
||||
if (!empty($session_role) && $session_role !== "sadmin") {
|
||||
$where = ['isactive' => 1, 'business_id' => (int)$session_bid];
|
||||
|
||||
@ -354,6 +354,83 @@ class Notifications extends BaseController
|
||||
return redirect()->route('campaign_creation');
|
||||
}
|
||||
|
||||
public function getExpCustomerDetail($window_time = null)
|
||||
{
|
||||
// Step 1: add the days to retrive th e data//
|
||||
$providedDate = date('Y-m-d');
|
||||
$newDate = date('Y-m-d', strtotime($providedDate . ' + ' . $window_time . ' days'));
|
||||
|
||||
// Step 2 :Get the custoemr detail//
|
||||
$NotificationModel = new NotificationModel();
|
||||
$ExpCustomerDetail = $NotificationModel->getExpDate(); // Retrieve the stored query
|
||||
if (empty($ExpCustomerDetail)) {
|
||||
|
||||
$this->logger->info('There is no query');
|
||||
return;
|
||||
}
|
||||
//Step 3: Replace the placeholder WINDOW_TIME with the user-provided value
|
||||
$modifiedQuery = str_replace('WINDOW_TIME', $window_time, $ExpCustomerDetail);
|
||||
// print_r($modifiedQuery);die;
|
||||
if (empty($modifiedQuery)) {
|
||||
|
||||
$this->logger->info('There is no sub query');
|
||||
return;
|
||||
}
|
||||
$db = \Config\Database::connect();
|
||||
$queryResult = $db->query($modifiedQuery)->getResultArray();
|
||||
$notification = new NotificationHelper();
|
||||
if (empty($queryResult)) {
|
||||
|
||||
}
|
||||
$this->logger->info("There is no data against customer on given date:{$newDate}");
|
||||
return;
|
||||
}
|
||||
foreach ($queryResult as $row) {
|
||||
$templateName = $NotificationModel->getTempName();
|
||||
if (empty($templateName)) {
|
||||
|
||||
$this->logger->info('There is no template found');
|
||||
return;
|
||||
}
|
||||
$userFirstName = $row['first_name'];
|
||||
$userLastName = $row['last_name'];
|
||||
$fullName = $userFirstName . ' ' . $userLastName;
|
||||
|
||||
$schemename = $row['title'];
|
||||
$expirydate = $row['to_subscription'];
|
||||
if (empty($fullName)) {
|
||||
|
||||
$this->logger->info('There is no subcription Name');
|
||||
return;
|
||||
}
|
||||
//Step 4: Prepare email content based on the template
|
||||
$emailContent = $templateName[0]['message'];
|
||||
$emailContent = str_replace("{User}", $fullName, $emailContent);
|
||||
$emailContent = str_replace("{SCHEME_NAME}", $schemename, $emailContent);
|
||||
$emailContent = str_replace("{EXPIRY_DATE}", $expirydate, $emailContent);
|
||||
|
||||
|
||||
$emailData = [
|
||||
'template_name'=>'',
|
||||
'recipient_email' => $row['email'],
|
||||
'subject' => 'Your Subscription Expiry Notification',
|
||||
|
||||
'description' =>$emailContent,
|
||||
|
||||
];
|
||||
|
||||
// Step 5:Send email using NotificationHelper
|
||||
$emailResult = $notification->sendEmail($emailData);
|
||||
|
||||
|
||||
if (isset($emailResult['success'])) {
|
||||
echo 'Email sent successfully';
|
||||
} else {
|
||||
echo 'Failed to send email';
|
||||
|
||||
}
|
||||
$templateName = $NotificationModel->getTempName();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -145,6 +145,42 @@ public function customerGroupQueryExecution($queries){
|
||||
// echo "</pre>";
|
||||
// die;
|
||||
}
|
||||
public function getExpDate()
|
||||
{
|
||||
$db = \Config\Database::connect();
|
||||
|
||||
$query = "SELECT * FROM customer_groups WHERE group_name = 'EXPIRYDAT'";
|
||||
|
||||
$result = $db->query($query)->getResultArray();
|
||||
|
||||
if (isset($result[0]["group_query"])) {
|
||||
return $result[0]["group_query"];
|
||||
} else {
|
||||
|
||||
error_log('group_query is not available in getExpDate()');
|
||||
|
||||
return ;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public function getTempName()
|
||||
{
|
||||
$db = \Config\Database::connect();
|
||||
$query = "SELECT * FROM templates WHERE template_name = '".EXPIRAY_NOTIFY_TEMPLATE_EMAIL."'";
|
||||
// print_r($query);die;
|
||||
$result = $db->query($query)->getResultArray();
|
||||
if (isset($result)) {
|
||||
return $result;
|
||||
} else {
|
||||
|
||||
error_log('group_query is not available in getExpDate()');
|
||||
|
||||
return $query;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@ -151,4 +151,38 @@
|
||||
$('#submitBtn').prop('disabled', true);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<script>
|
||||
// Get the current date and time
|
||||
const now = new Date();
|
||||
const currentDate = now.toISOString().split('T')[0]; // Get current date in YYYY-MM-DD format
|
||||
const currentTime = now.toTimeString().split(' ')[0]; // Get current time in HH:MM:SS format
|
||||
|
||||
|
||||
const dateInput = document.getElementById('example-date');
|
||||
const timeInput = document.getElementById('example-time');
|
||||
|
||||
|
||||
dateInput.setAttribute('min', currentDate);
|
||||
timeInput.setAttribute('min', currentTime);
|
||||
|
||||
|
||||
timeInput.addEventListener('input', function() {
|
||||
if (dateInput.value === currentDate) {
|
||||
const selectedTime = timeInput.value;
|
||||
if (selectedTime < currentTime) {
|
||||
timeInput.value = currentTime;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Optional: Disable past dates in date input if needed
|
||||
dateInput.addEventListener('input', function() {
|
||||
if (dateInput.value === currentDate) {
|
||||
const selectedTime = timeInput.value;
|
||||
if (selectedTime < currentTime) {
|
||||
timeInput.value = currentTime;
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
@ -221,7 +221,7 @@
|
||||
<?php
|
||||
// print "<pre>";
|
||||
// print_r($expiring_membership);
|
||||
// print "</pre>";
|
||||
// print "</pre>";
|
||||
foreach ($expiring_membership as $e) : ?>
|
||||
<tr>
|
||||
<td><?= $e['sub_id']; ?></td>
|
||||
|
||||
5
vendor/bin/php-cs-fixer.bat
vendored
Normal file
5
vendor/bin/php-cs-fixer.bat
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
@ECHO OFF
|
||||
setlocal DISABLEDELAYEDEXPANSION
|
||||
SET BIN_TARGET=%~dp0/php-cs-fixer
|
||||
SET COMPOSER_RUNTIME_BIN_DIR=%~dp0
|
||||
php "%BIN_TARGET%" %*
|
||||
5
vendor/bin/php-parse.bat
vendored
Normal file
5
vendor/bin/php-parse.bat
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
@ECHO OFF
|
||||
setlocal DISABLEDELAYEDEXPANSION
|
||||
SET BIN_TARGET=%~dp0/php-parse
|
||||
SET COMPOSER_RUNTIME_BIN_DIR=%~dp0
|
||||
php "%BIN_TARGET%" %*
|
||||
5
vendor/bin/phpunit.bat
vendored
Normal file
5
vendor/bin/phpunit.bat
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
@ECHO OFF
|
||||
setlocal DISABLEDELAYEDEXPANSION
|
||||
SET BIN_TARGET=%~dp0/phpunit
|
||||
SET COMPOSER_RUNTIME_BIN_DIR=%~dp0
|
||||
php "%BIN_TARGET%" %*
|
||||
11
vendor/composer/semver/phpstan-baseline.neon
vendored
Normal file
11
vendor/composer/semver/phpstan-baseline.neon
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
parameters:
|
||||
ignoreErrors:
|
||||
-
|
||||
message: "#^Parameter \\#1 \\$operator of class Composer\\\\Semver\\\\Constraint\\\\Constraint constructor expects '\\!\\='\\|'\\<'\\|'\\<\\='\\|'\\<\\>'\\|'\\='\\|'\\=\\='\\|'\\>'\\|'\\>\\=', non\\-falsy\\-string given\\.$#"
|
||||
count: 1
|
||||
path: src/VersionParser.php
|
||||
|
||||
-
|
||||
message: "#^Strict comparison using \\=\\=\\= between null and non\\-empty\\-string will always evaluate to false\\.$#"
|
||||
count: 2
|
||||
path: src/VersionParser.php
|
||||
52
vendor/friendsofphp/php-cs-fixer/src/Console/Output/OutputContext.php
vendored
Normal file
52
vendor/friendsofphp/php-cs-fixer/src/Console/Output/OutputContext.php
vendored
Normal file
@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* This file is part of PHP CS Fixer.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
|
||||
*
|
||||
* This source file is subject to the MIT license that is bundled
|
||||
* with this source code in the file LICENSE.
|
||||
*/
|
||||
|
||||
namespace PhpCsFixer\Console\Output;
|
||||
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
final class OutputContext
|
||||
{
|
||||
private ?OutputInterface $output;
|
||||
private int $terminalWidth;
|
||||
private int $filesCount;
|
||||
|
||||
public function __construct(
|
||||
?OutputInterface $output,
|
||||
int $terminalWidth,
|
||||
int $filesCount
|
||||
) {
|
||||
$this->output = $output;
|
||||
$this->terminalWidth = $terminalWidth;
|
||||
$this->filesCount = $filesCount;
|
||||
}
|
||||
|
||||
public function getOutput(): ?OutputInterface
|
||||
{
|
||||
return $this->output;
|
||||
}
|
||||
|
||||
public function getTerminalWidth(): int
|
||||
{
|
||||
return $this->terminalWidth;
|
||||
}
|
||||
|
||||
public function getFilesCount(): int
|
||||
{
|
||||
return $this->filesCount;
|
||||
}
|
||||
}
|
||||
127
vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/DotsOutput.php
vendored
Normal file
127
vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/DotsOutput.php
vendored
Normal file
@ -0,0 +1,127 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* This file is part of PHP CS Fixer.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
|
||||
*
|
||||
* This source file is subject to the MIT license that is bundled
|
||||
* with this source code in the file LICENSE.
|
||||
*/
|
||||
|
||||
namespace PhpCsFixer\Console\Output\Progress;
|
||||
|
||||
use PhpCsFixer\Console\Output\OutputContext;
|
||||
use PhpCsFixer\FixerFileProcessedEvent;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
|
||||
/**
|
||||
* Output writer to show the progress of a FixCommand using dots and meaningful letters.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
final class DotsOutput implements ProgressOutputInterface
|
||||
{
|
||||
/**
|
||||
* File statuses map.
|
||||
*
|
||||
* @var array<FixerFileProcessedEvent::STATUS_*, array{symbol: string, format: string, description: string}>
|
||||
*/
|
||||
private static array $eventStatusMap = [
|
||||
FixerFileProcessedEvent::STATUS_NO_CHANGES => ['symbol' => '.', 'format' => '%s', 'description' => 'no changes'],
|
||||
FixerFileProcessedEvent::STATUS_FIXED => ['symbol' => 'F', 'format' => '<fg=green>%s</fg=green>', 'description' => 'fixed'],
|
||||
FixerFileProcessedEvent::STATUS_SKIPPED => ['symbol' => 'S', 'format' => '<fg=cyan>%s</fg=cyan>', 'description' => 'skipped (cached or empty file)'],
|
||||
FixerFileProcessedEvent::STATUS_INVALID => ['symbol' => 'I', 'format' => '<bg=red>%s</bg=red>', 'description' => 'invalid file syntax (file ignored)'],
|
||||
FixerFileProcessedEvent::STATUS_EXCEPTION => ['symbol' => 'E', 'format' => '<bg=red>%s</bg=red>', 'description' => 'error'],
|
||||
FixerFileProcessedEvent::STATUS_LINT => ['symbol' => 'E', 'format' => '<bg=red>%s</bg=red>', 'description' => 'error'],
|
||||
];
|
||||
|
||||
/** @readonly */
|
||||
private OutputContext $context;
|
||||
|
||||
private int $processedFiles = 0;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
private $symbolsPerLine;
|
||||
|
||||
public function __construct(OutputContext $context)
|
||||
{
|
||||
$this->context = $context;
|
||||
|
||||
// max number of characters per line
|
||||
// - total length x 2 (e.g. " 1 / 123" => 6 digits and padding spaces)
|
||||
// - 11 (extra spaces, parentheses and percentage characters, e.g. " x / x (100%)")
|
||||
$this->symbolsPerLine = max(1, $context->getTerminalWidth() - \strlen((string) $context->getFilesCount()) * 2 - 11);
|
||||
}
|
||||
|
||||
/**
|
||||
* This class is not intended to be serialized,
|
||||
* and cannot be deserialized (see __wakeup method).
|
||||
*/
|
||||
public function __sleep(): array
|
||||
{
|
||||
throw new \BadMethodCallException('Cannot serialize '.__CLASS__);
|
||||
}
|
||||
|
||||
/**
|
||||
* Disable the deserialization of the class to prevent attacker executing
|
||||
* code by leveraging the __destruct method.
|
||||
*
|
||||
* @see https://owasp.org/www-community/vulnerabilities/PHP_Object_Injection
|
||||
*/
|
||||
public function __wakeup(): void
|
||||
{
|
||||
throw new \BadMethodCallException('Cannot unserialize '.__CLASS__);
|
||||
}
|
||||
|
||||
public function onFixerFileProcessed(FixerFileProcessedEvent $event): void
|
||||
{
|
||||
$status = self::$eventStatusMap[$event->getStatus()];
|
||||
$this->getOutput()->write($this->getOutput()->isDecorated() ? sprintf($status['format'], $status['symbol']) : $status['symbol']);
|
||||
|
||||
++$this->processedFiles;
|
||||
|
||||
$symbolsOnCurrentLine = $this->processedFiles % $this->symbolsPerLine;
|
||||
$isLast = $this->processedFiles === $this->context->getFilesCount();
|
||||
|
||||
if (0 === $symbolsOnCurrentLine || $isLast) {
|
||||
$this->getOutput()->write(sprintf(
|
||||
'%s %'.\strlen((string) $this->context->getFilesCount()).'d / %d (%3d%%)',
|
||||
$isLast && 0 !== $symbolsOnCurrentLine ? str_repeat(' ', $this->symbolsPerLine - $symbolsOnCurrentLine) : '',
|
||||
$this->processedFiles,
|
||||
$this->context->getFilesCount(),
|
||||
round($this->processedFiles / $this->context->getFilesCount() * 100)
|
||||
));
|
||||
|
||||
if (!$isLast) {
|
||||
$this->getOutput()->writeln('');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function printLegend(): void
|
||||
{
|
||||
$symbols = [];
|
||||
|
||||
foreach (self::$eventStatusMap as $status) {
|
||||
$symbol = $status['symbol'];
|
||||
if ('' === $symbol || isset($symbols[$symbol])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$symbols[$symbol] = sprintf('%s-%s', $this->getOutput()->isDecorated() ? sprintf($status['format'], $symbol) : $symbol, $status['description']);
|
||||
}
|
||||
|
||||
$this->getOutput()->write(sprintf("\nLegend: %s\n", implode(', ', $symbols)));
|
||||
}
|
||||
|
||||
private function getOutput(): OutputInterface
|
||||
{
|
||||
return $this->context->getOutput();
|
||||
}
|
||||
}
|
||||
27
vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/NullOutput.php
vendored
Normal file
27
vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/NullOutput.php
vendored
Normal file
@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* This file is part of PHP CS Fixer.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
|
||||
*
|
||||
* This source file is subject to the MIT license that is bundled
|
||||
* with this source code in the file LICENSE.
|
||||
*/
|
||||
|
||||
namespace PhpCsFixer\Console\Output\Progress;
|
||||
|
||||
use PhpCsFixer\FixerFileProcessedEvent;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
final class NullOutput implements ProgressOutputInterface
|
||||
{
|
||||
public function printLegend(): void {}
|
||||
|
||||
public function onFixerFileProcessed(FixerFileProcessedEvent $event): void {}
|
||||
}
|
||||
51
vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputFactory.php
vendored
Normal file
51
vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputFactory.php
vendored
Normal file
@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* This file is part of PHP CS Fixer.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
|
||||
*
|
||||
* This source file is subject to the MIT license that is bundled
|
||||
* with this source code in the file LICENSE.
|
||||
*/
|
||||
|
||||
namespace PhpCsFixer\Console\Output\Progress;
|
||||
|
||||
use PhpCsFixer\Console\Output\OutputContext;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
final class ProgressOutputFactory
|
||||
{
|
||||
public function create(string $outputType, OutputContext $context): ProgressOutputInterface
|
||||
{
|
||||
if (null === $context->getOutput()) {
|
||||
$outputType = ProgressOutputType::NONE;
|
||||
}
|
||||
|
||||
if (!$this->isBuiltInType($outputType)) {
|
||||
throw new \InvalidArgumentException(
|
||||
sprintf(
|
||||
'Something went wrong, "%s" output type is not supported',
|
||||
$outputType
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
return ProgressOutputType::NONE === $outputType
|
||||
? new NullOutput()
|
||||
: new DotsOutput($context);
|
||||
}
|
||||
|
||||
private function isBuiltInType(string $outputType): bool
|
||||
{
|
||||
return \in_array($outputType, [
|
||||
ProgressOutputType::NONE,
|
||||
ProgressOutputType::DOTS,
|
||||
], true);
|
||||
}
|
||||
}
|
||||
27
vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputInterface.php
vendored
Normal file
27
vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputInterface.php
vendored
Normal file
@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* This file is part of PHP CS Fixer.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
|
||||
*
|
||||
* This source file is subject to the MIT license that is bundled
|
||||
* with this source code in the file LICENSE.
|
||||
*/
|
||||
|
||||
namespace PhpCsFixer\Console\Output\Progress;
|
||||
|
||||
use PhpCsFixer\FixerFileProcessedEvent;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
interface ProgressOutputInterface
|
||||
{
|
||||
public function printLegend(): void;
|
||||
|
||||
public function onFixerFileProcessed(FixerFileProcessedEvent $event): void;
|
||||
}
|
||||
29
vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputType.php
vendored
Normal file
29
vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputType.php
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* This file is part of PHP CS Fixer.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
|
||||
*
|
||||
* This source file is subject to the MIT license that is bundled
|
||||
* with this source code in the file LICENSE.
|
||||
*/
|
||||
|
||||
namespace PhpCsFixer\Console\Output\Progress;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
final class ProgressOutputType
|
||||
{
|
||||
public const NONE = 'none';
|
||||
public const DOTS = 'dots';
|
||||
|
||||
public const AVAILABLE = [
|
||||
self::NONE,
|
||||
self::DOTS,
|
||||
];
|
||||
}
|
||||
173
vendor/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/DocLexer.php
vendored
Normal file
173
vendor/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/DocLexer.php
vendored
Normal file
@ -0,0 +1,173 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* This file is part of PHP CS Fixer.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
|
||||
*
|
||||
* This source file is subject to the MIT license that is bundled
|
||||
* with this source code in the file LICENSE.
|
||||
*/
|
||||
|
||||
namespace PhpCsFixer\Doctrine\Annotation;
|
||||
|
||||
use PhpCsFixer\Preg;
|
||||
|
||||
/**
|
||||
* Copyright (c) 2006-2013 Doctrine Project.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
* this software and associated documentation files (the "Software"), to deal in
|
||||
* the Software without restriction, including without limitation the rights to
|
||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||
* of the Software, and to permit persons to whom the Software is furnished to do
|
||||
* so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
final class DocLexer
|
||||
{
|
||||
public const T_NONE = 1;
|
||||
public const T_INTEGER = 2;
|
||||
public const T_STRING = 3;
|
||||
public const T_FLOAT = 4;
|
||||
|
||||
// All tokens that are also identifiers should be >= 100
|
||||
public const T_IDENTIFIER = 100;
|
||||
public const T_AT = 101;
|
||||
public const T_CLOSE_CURLY_BRACES = 102;
|
||||
public const T_CLOSE_PARENTHESIS = 103;
|
||||
public const T_COMMA = 104;
|
||||
public const T_EQUALS = 105;
|
||||
public const T_FALSE = 106;
|
||||
public const T_NAMESPACE_SEPARATOR = 107;
|
||||
public const T_OPEN_CURLY_BRACES = 108;
|
||||
public const T_OPEN_PARENTHESIS = 109;
|
||||
public const T_TRUE = 110;
|
||||
public const T_NULL = 111;
|
||||
public const T_COLON = 112;
|
||||
public const T_MINUS = 113;
|
||||
|
||||
/** @var array<string, self::T_*> */
|
||||
private array $noCase = [
|
||||
'@' => self::T_AT,
|
||||
',' => self::T_COMMA,
|
||||
'(' => self::T_OPEN_PARENTHESIS,
|
||||
')' => self::T_CLOSE_PARENTHESIS,
|
||||
'{' => self::T_OPEN_CURLY_BRACES,
|
||||
'}' => self::T_CLOSE_CURLY_BRACES,
|
||||
'=' => self::T_EQUALS,
|
||||
':' => self::T_COLON,
|
||||
'-' => self::T_MINUS,
|
||||
'\\' => self::T_NAMESPACE_SEPARATOR,
|
||||
];
|
||||
|
||||
/** @var list<Token> */
|
||||
private array $tokens = [];
|
||||
|
||||
private int $position = 0;
|
||||
|
||||
private int $peek = 0;
|
||||
|
||||
private ?string $regex;
|
||||
|
||||
public function setInput(string $input): void
|
||||
{
|
||||
$this->tokens = [];
|
||||
$this->reset();
|
||||
$this->scan($input);
|
||||
}
|
||||
|
||||
public function reset(): void
|
||||
{
|
||||
$this->peek = 0;
|
||||
$this->position = 0;
|
||||
}
|
||||
|
||||
public function peek(): ?Token
|
||||
{
|
||||
if (isset($this->tokens[$this->position + $this->peek])) {
|
||||
return $this->tokens[$this->position + $this->peek++];
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return list<string>
|
||||
*/
|
||||
private function getCatchablePatterns(): array
|
||||
{
|
||||
return [
|
||||
'[a-z_\\\][a-z0-9_\:\\\]*[a-z_][a-z0-9_]*',
|
||||
'(?:[+-]?[0-9]+(?:[\.][0-9]+)*)(?:[eE][+-]?[0-9]+)?',
|
||||
'"(?:""|[^"])*+"',
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return list<string>
|
||||
*/
|
||||
private function getNonCatchablePatterns(): array
|
||||
{
|
||||
return ['\s+', '\*+', '(.)'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return self::T_*
|
||||
*/
|
||||
private function getType(string &$value): int
|
||||
{
|
||||
$type = self::T_NONE;
|
||||
|
||||
if ('"' === $value[0]) {
|
||||
$value = str_replace('""', '"', substr($value, 1, \strlen($value) - 2));
|
||||
|
||||
return self::T_STRING;
|
||||
}
|
||||
|
||||
if (isset($this->noCase[$value])) {
|
||||
return $this->noCase[$value];
|
||||
}
|
||||
|
||||
if ('_' === $value[0] || '\\' === $value[0] || !Preg::match('/[^A-Za-z]/', $value[0])) {
|
||||
return self::T_IDENTIFIER;
|
||||
}
|
||||
|
||||
if (is_numeric($value)) {
|
||||
return str_contains($value, '.') || false !== stripos($value, 'e')
|
||||
? self::T_FLOAT : self::T_INTEGER;
|
||||
}
|
||||
|
||||
return $type;
|
||||
}
|
||||
|
||||
private function scan(string $input): void
|
||||
{
|
||||
if (!isset($this->regex)) {
|
||||
$this->regex = sprintf(
|
||||
'/(%s)|%s/%s',
|
||||
implode(')|(', $this->getCatchablePatterns()),
|
||||
implode('|', $this->getNonCatchablePatterns()),
|
||||
'iu'
|
||||
);
|
||||
}
|
||||
|
||||
$flags = PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_OFFSET_CAPTURE;
|
||||
$matches = Preg::split($this->regex, $input, -1, $flags);
|
||||
|
||||
foreach ($matches as $match) {
|
||||
// Must remain before 'value' assignment since it can change content
|
||||
$firstMatch = $match[0];
|
||||
$type = $this->getType($firstMatch);
|
||||
|
||||
$this->tokens[] = new Token($type, $firstMatch, (int) $match[1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
105
vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/ReturnToYieldFromFixer.php
vendored
Normal file
105
vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/ReturnToYieldFromFixer.php
vendored
Normal file
@ -0,0 +1,105 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* This file is part of PHP CS Fixer.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
|
||||
*
|
||||
* This source file is subject to the MIT license that is bundled
|
||||
* with this source code in the file LICENSE.
|
||||
*/
|
||||
|
||||
namespace PhpCsFixer\Fixer\ArrayNotation;
|
||||
|
||||
use PhpCsFixer\AbstractFixer;
|
||||
use PhpCsFixer\FixerDefinition\CodeSample;
|
||||
use PhpCsFixer\FixerDefinition\FixerDefinition;
|
||||
use PhpCsFixer\FixerDefinition\FixerDefinitionInterface;
|
||||
use PhpCsFixer\Tokenizer\CT;
|
||||
use PhpCsFixer\Tokenizer\Token;
|
||||
use PhpCsFixer\Tokenizer\Tokens;
|
||||
|
||||
/**
|
||||
* @author Kuba Werłos <werlos@gmail.com>
|
||||
*/
|
||||
final class ReturnToYieldFromFixer extends AbstractFixer
|
||||
{
|
||||
public function getDefinition(): FixerDefinitionInterface
|
||||
{
|
||||
return new FixerDefinition(
|
||||
'If the function explicitly returns an array, and has the return type `iterable`, then `yield from` must be used instead of `return`.',
|
||||
[new CodeSample('<?php function giveMeData(): iterable {
|
||||
return [1, 2, 3];
|
||||
}
|
||||
')],
|
||||
);
|
||||
}
|
||||
|
||||
public function isCandidate(Tokens $tokens): bool
|
||||
{
|
||||
return $tokens->isAllTokenKindsFound([T_FUNCTION, T_RETURN]) && $tokens->isAnyTokenKindsFound([T_ARRAY, CT::T_ARRAY_SQUARE_BRACE_OPEN]);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*
|
||||
* Must run before YieldFromArrayToYieldsFixer.
|
||||
* Must run after PhpUnitDataProviderReturnTypeFixer, PhpdocToReturnTypeFixer.
|
||||
*/
|
||||
public function getPriority(): int
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
protected function applyFix(\SplFileInfo $file, Tokens $tokens): void
|
||||
{
|
||||
foreach ($tokens->findGivenKind(T_RETURN) as $index => $token) {
|
||||
if (!$this->shouldBeFixed($tokens, $index)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$tokens[$index] = new Token([T_YIELD_FROM, 'yield from']);
|
||||
}
|
||||
}
|
||||
|
||||
private function shouldBeFixed(Tokens $tokens, int $returnIndex): bool
|
||||
{
|
||||
$arrayStartIndex = $tokens->getNextMeaningfulToken($returnIndex);
|
||||
if (!$tokens[$arrayStartIndex]->isGivenKind([T_ARRAY, CT::T_ARRAY_SQUARE_BRACE_OPEN])) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($tokens[$arrayStartIndex]->isGivenKind(CT::T_ARRAY_SQUARE_BRACE_OPEN)) {
|
||||
$arrayEndIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_ARRAY_SQUARE_BRACE, $arrayStartIndex);
|
||||
} else {
|
||||
$arrayOpenParenthesisIndex = $tokens->getNextTokenOfKind($arrayStartIndex, ['(']);
|
||||
$arrayEndIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS_BRACE, $arrayOpenParenthesisIndex);
|
||||
}
|
||||
|
||||
$functionEndIndex = $arrayEndIndex;
|
||||
do {
|
||||
$functionEndIndex = $tokens->getNextMeaningfulToken($functionEndIndex);
|
||||
} while ($tokens[$functionEndIndex]->equals(';'));
|
||||
if (!$tokens[$functionEndIndex]->equals('}')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$functionStartIndex = $tokens->findBlockStart(Tokens::BLOCK_TYPE_CURLY_BRACE, $functionEndIndex);
|
||||
|
||||
$returnTypeIndex = $tokens->getPrevMeaningfulToken($functionStartIndex);
|
||||
if (!$tokens[$returnTypeIndex]->isGivenKind(T_STRING)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ('iterable' !== strtolower($tokens[$returnTypeIndex]->getContent())) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$beforeReturnTypeIndex = $tokens->getPrevMeaningfulToken($returnTypeIndex);
|
||||
|
||||
return $tokens[$beforeReturnTypeIndex]->isGivenKind(CT::T_TYPE_COLON);
|
||||
}
|
||||
}
|
||||
189
vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/YieldFromArrayToYieldsFixer.php
vendored
Normal file
189
vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/YieldFromArrayToYieldsFixer.php
vendored
Normal file
@ -0,0 +1,189 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* This file is part of PHP CS Fixer.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
|
||||
*
|
||||
* This source file is subject to the MIT license that is bundled
|
||||
* with this source code in the file LICENSE.
|
||||
*/
|
||||
|
||||
namespace PhpCsFixer\Fixer\ArrayNotation;
|
||||
|
||||
use PhpCsFixer\AbstractFixer;
|
||||
use PhpCsFixer\FixerDefinition\CodeSample;
|
||||
use PhpCsFixer\FixerDefinition\FixerDefinition;
|
||||
use PhpCsFixer\FixerDefinition\FixerDefinitionInterface;
|
||||
use PhpCsFixer\Tokenizer\CT;
|
||||
use PhpCsFixer\Tokenizer\Token;
|
||||
use PhpCsFixer\Tokenizer\Tokens;
|
||||
|
||||
/**
|
||||
* @author Kuba Werłos <werlos@gmail.com>
|
||||
*/
|
||||
final class YieldFromArrayToYieldsFixer extends AbstractFixer
|
||||
{
|
||||
public function getDefinition(): FixerDefinitionInterface
|
||||
{
|
||||
return new FixerDefinition(
|
||||
'Yield from array must be unpacked to series of yields.',
|
||||
[
|
||||
new CodeSample('<?php function generate() {
|
||||
yield from [
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
];
|
||||
}
|
||||
'),
|
||||
],
|
||||
'The conversion will make the array in `yield from` changed in arrays of 1 less dimension.',
|
||||
'The rule is risky in case of `yield from` being used multiple times within single function scope, while using list-alike data sources (e.g. `function foo() { yield from ["a"]; yield from ["b"]; }`). It only matters when consuming such iterator with key-value context, because set of yielded keys may be changed after applying this rule.'
|
||||
);
|
||||
}
|
||||
|
||||
public function isRisky(): bool
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public function isCandidate(Tokens $tokens): bool
|
||||
{
|
||||
return $tokens->isTokenKindFound(T_YIELD_FROM);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*
|
||||
* Must run before BlankLineBeforeStatementFixer, NoExtraBlankLinesFixer, NoMultipleStatementsPerLineFixer, NoWhitespaceInBlankLineFixer, StatementIndentationFixer.
|
||||
* Must run after ReturnToYieldFromFixer.
|
||||
*/
|
||||
public function getPriority(): int
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
protected function applyFix(\SplFileInfo $file, Tokens $tokens): void
|
||||
{
|
||||
/**
|
||||
* @var array<int, Token> $inserts
|
||||
*/
|
||||
$inserts = [];
|
||||
|
||||
foreach ($this->getYieldsFromToUnpack($tokens) as $index => [$startIndex, $endIndex]) {
|
||||
$tokens->clearTokenAndMergeSurroundingWhitespace($index);
|
||||
|
||||
if ($tokens[$startIndex]->equals('(')) {
|
||||
$prevStartIndex = $tokens->getPrevMeaningfulToken($startIndex);
|
||||
$tokens->clearTokenAndMergeSurroundingWhitespace($prevStartIndex); // clear `array` from `array(`
|
||||
}
|
||||
|
||||
$tokens->clearTokenAndMergeSurroundingWhitespace($startIndex);
|
||||
$tokens->clearTokenAndMergeSurroundingWhitespace($endIndex);
|
||||
|
||||
$arrayHasTrailingComma = false;
|
||||
|
||||
$startIndex = $tokens->getNextMeaningfulToken($startIndex);
|
||||
|
||||
$inserts[$startIndex] = [new Token([T_YIELD, 'yield']), new Token([T_WHITESPACE, ' '])];
|
||||
|
||||
foreach ($this->findArrayItemCommaIndex(
|
||||
$tokens,
|
||||
$startIndex,
|
||||
$tokens->getPrevMeaningfulToken($endIndex),
|
||||
) as $commaIndex) {
|
||||
$nextItemIndex = $tokens->getNextMeaningfulToken($commaIndex);
|
||||
|
||||
if ($nextItemIndex < $endIndex) {
|
||||
$inserts[$nextItemIndex] = [new Token([T_YIELD, 'yield']), new Token([T_WHITESPACE, ' '])];
|
||||
$tokens[$commaIndex] = new Token(';');
|
||||
} else {
|
||||
$arrayHasTrailingComma = true;
|
||||
// array has trailing comma - we replace it with `;` (as it's best fit to put it)
|
||||
$tokens[$commaIndex] = new Token(';');
|
||||
}
|
||||
}
|
||||
|
||||
// there was a trailing comma, so we do not need original `;` after initial array structure
|
||||
if (true === $arrayHasTrailingComma) {
|
||||
$tokens->clearTokenAndMergeSurroundingWhitespace($tokens->getNextMeaningfulToken($endIndex));
|
||||
}
|
||||
}
|
||||
|
||||
$tokens->insertSlices($inserts);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return iterable<int, array<int>>
|
||||
*/
|
||||
private function getYieldsFromToUnpack(Tokens $tokens): iterable
|
||||
{
|
||||
$tokensCount = $tokens->count();
|
||||
$index = 0;
|
||||
while (++$index < $tokensCount) {
|
||||
if (!$tokens[$index]->isGivenKind(T_YIELD_FROM)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$prevIndex = $tokens->getPrevMeaningfulToken($index);
|
||||
if (!$tokens[$prevIndex]->equalsAny([';', '{', '}', [T_OPEN_TAG]])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$arrayStartIndex = $tokens->getNextMeaningfulToken($index);
|
||||
|
||||
if (!$tokens[$arrayStartIndex]->isGivenKind([T_ARRAY, CT::T_ARRAY_SQUARE_BRACE_OPEN])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($tokens[$arrayStartIndex]->isGivenKind(T_ARRAY)) {
|
||||
$startIndex = $tokens->getNextTokenOfKind($arrayStartIndex, ['(']);
|
||||
$endIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS_BRACE, $startIndex);
|
||||
} else {
|
||||
$startIndex = $arrayStartIndex;
|
||||
$endIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_ARRAY_SQUARE_BRACE, $startIndex);
|
||||
}
|
||||
|
||||
// is there empty "yield from []" ?
|
||||
if ($endIndex === $tokens->getNextMeaningfulToken($startIndex)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// is there any nested "yield from"?
|
||||
if ([] !== $tokens->findGivenKind(T_YIELD_FROM, $startIndex, $endIndex)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
yield $index => [$startIndex, $endIndex];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return iterable<int>
|
||||
*/
|
||||
private function findArrayItemCommaIndex(Tokens $tokens, int $startIndex, int $endIndex): iterable
|
||||
{
|
||||
for ($index = $startIndex; $index <= $endIndex; ++$index) {
|
||||
$token = $tokens[$index];
|
||||
|
||||
// skip nested (), [], {} constructs
|
||||
$blockDefinitionProbe = Tokens::detectBlockType($token);
|
||||
|
||||
if (null !== $blockDefinitionProbe && true === $blockDefinitionProbe['isStart']) {
|
||||
$index = $tokens->findBlockEnd($blockDefinitionProbe['type'], $index);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!$tokens[$index]->equals(',')) {
|
||||
continue;
|
||||
}
|
||||
|
||||
yield $index;
|
||||
}
|
||||
}
|
||||
}
|
||||
83
vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/SingleLineEmptyBodyFixer.php
vendored
Normal file
83
vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/SingleLineEmptyBodyFixer.php
vendored
Normal file
@ -0,0 +1,83 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* This file is part of PHP CS Fixer.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
|
||||
*
|
||||
* This source file is subject to the MIT license that is bundled
|
||||
* with this source code in the file LICENSE.
|
||||
*/
|
||||
|
||||
namespace PhpCsFixer\Fixer\Basic;
|
||||
|
||||
use PhpCsFixer\AbstractFixer;
|
||||
use PhpCsFixer\FixerDefinition\CodeSample;
|
||||
use PhpCsFixer\FixerDefinition\FixerDefinition;
|
||||
use PhpCsFixer\FixerDefinition\FixerDefinitionInterface;
|
||||
use PhpCsFixer\Tokenizer\Token;
|
||||
use PhpCsFixer\Tokenizer\Tokens;
|
||||
|
||||
final class SingleLineEmptyBodyFixer extends AbstractFixer
|
||||
{
|
||||
public function getDefinition(): FixerDefinitionInterface
|
||||
{
|
||||
return new FixerDefinition(
|
||||
'Empty body of class, interface, trait, enum or function must be abbreviated as `{}` and placed on the same line as the previous symbol, separated by a single space.',
|
||||
[new CodeSample('<?php function foo(
|
||||
int $x
|
||||
)
|
||||
{
|
||||
}
|
||||
')],
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*
|
||||
* Must run after ClassDefinitionFixer, CurlyBracesPositionFixer, NoUselessReturnFixer.
|
||||
*/
|
||||
public function getPriority(): int
|
||||
{
|
||||
return -19;
|
||||
}
|
||||
|
||||
public function isCandidate(Tokens $tokens): bool
|
||||
{
|
||||
if (\defined('T_ENUM') && $tokens->isTokenKindFound(T_ENUM)) { // @TODO: drop condition when PHP 8.1+ is required
|
||||
return true;
|
||||
}
|
||||
|
||||
return $tokens->isAnyTokenKindsFound([T_INTERFACE, T_CLASS, T_FUNCTION, T_TRAIT]);
|
||||
}
|
||||
|
||||
protected function applyFix(\SplFileInfo $file, Tokens $tokens): void
|
||||
{
|
||||
for ($index = $tokens->count() - 1; $index > 0; --$index) {
|
||||
if (!$tokens[$index]->isGivenKind([...Token::getClassyTokenKinds(), T_FUNCTION])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$openBraceIndex = $tokens->getNextTokenOfKind($index, ['{', ';']);
|
||||
if (!$tokens[$openBraceIndex]->equals('{')) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$closeBraceIndex = $tokens->getNextNonWhitespace($openBraceIndex);
|
||||
if (!$tokens[$closeBraceIndex]->equals('}')) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$tokens->ensureWhitespaceAtIndex($openBraceIndex + 1, 0, '');
|
||||
|
||||
$beforeOpenBraceIndex = $tokens->getPrevNonWhitespace($openBraceIndex);
|
||||
if (!$tokens[$beforeOpenBraceIndex]->isGivenKind([T_COMMENT, T_DOC_COMMENT])) {
|
||||
$tokens->ensureWhitespaceAtIndex($openBraceIndex - 1, 1, ' ');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
436
vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedTypesFixer.php
vendored
Normal file
436
vendor/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedTypesFixer.php
vendored
Normal file
@ -0,0 +1,436 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* This file is part of PHP CS Fixer.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
|
||||
*
|
||||
* This source file is subject to the MIT license that is bundled
|
||||
* with this source code in the file LICENSE.
|
||||
*/
|
||||
|
||||
namespace PhpCsFixer\Fixer\ClassNotation;
|
||||
|
||||
use PhpCsFixer\AbstractFixer;
|
||||
use PhpCsFixer\Fixer\ConfigurableFixerInterface;
|
||||
use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver;
|
||||
use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface;
|
||||
use PhpCsFixer\FixerConfiguration\FixerOptionBuilder;
|
||||
use PhpCsFixer\FixerDefinition\CodeSample;
|
||||
use PhpCsFixer\FixerDefinition\FixerDefinition;
|
||||
use PhpCsFixer\FixerDefinition\FixerDefinitionInterface;
|
||||
use PhpCsFixer\FixerDefinition\VersionSpecification;
|
||||
use PhpCsFixer\FixerDefinition\VersionSpecificCodeSample;
|
||||
use PhpCsFixer\Preg;
|
||||
use PhpCsFixer\Tokenizer\Analyzer\Analysis\TypeAnalysis;
|
||||
use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer;
|
||||
use PhpCsFixer\Tokenizer\CT;
|
||||
use PhpCsFixer\Tokenizer\Token;
|
||||
use PhpCsFixer\Tokenizer\Tokens;
|
||||
use PhpCsFixer\Tokenizer\TokensAnalyzer;
|
||||
|
||||
/**
|
||||
* @author John Paul E. Balandan, CPA <paulbalandan@gmail.com>
|
||||
*/
|
||||
final class OrderedTypesFixer extends AbstractFixer implements ConfigurableFixerInterface
|
||||
{
|
||||
public function getDefinition(): FixerDefinitionInterface
|
||||
{
|
||||
return new FixerDefinition(
|
||||
'Sort union types and intersection types using configured order.',
|
||||
[
|
||||
new CodeSample(
|
||||
'<?php
|
||||
try {
|
||||
cache()->save($foo);
|
||||
} catch (\RuntimeException|CacheException $e) {
|
||||
logger($e);
|
||||
|
||||
throw $e;
|
||||
}
|
||||
'
|
||||
),
|
||||
new VersionSpecificCodeSample(
|
||||
'<?php
|
||||
interface Foo
|
||||
{
|
||||
public function bar(\Aaa|\AA $foo): string|int;
|
||||
}
|
||||
',
|
||||
new VersionSpecification(8_00_00),
|
||||
[
|
||||
'case_sensitive' => true,
|
||||
]
|
||||
),
|
||||
new VersionSpecificCodeSample(
|
||||
'<?php
|
||||
interface Foo
|
||||
{
|
||||
public function bar(null|string|int $foo): string|int;
|
||||
|
||||
public function foo(\Stringable&\Countable $obj): int;
|
||||
}
|
||||
',
|
||||
new VersionSpecification(80100),
|
||||
['null_adjustment' => 'always_last']
|
||||
),
|
||||
new VersionSpecificCodeSample(
|
||||
'<?php
|
||||
interface Bar
|
||||
{
|
||||
public function bar(null|string|int $foo): string|int;
|
||||
}
|
||||
',
|
||||
new VersionSpecification(80000),
|
||||
[
|
||||
'sort_algorithm' => 'none',
|
||||
'null_adjustment' => 'always_last',
|
||||
]
|
||||
),
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*
|
||||
* Must run before TypesSpacesFixer.
|
||||
* Must run after NullableTypeDeclarationFixer, NullableTypeDeclarationForDefaultNullValueFixer.
|
||||
*/
|
||||
public function getPriority(): int
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
public function isCandidate(Tokens $tokens): bool
|
||||
{
|
||||
return $tokens->isAnyTokenKindsFound([CT::T_TYPE_ALTERNATION, CT::T_TYPE_INTERSECTION]);
|
||||
}
|
||||
|
||||
protected function createConfigurationDefinition(): FixerConfigurationResolverInterface
|
||||
{
|
||||
return new FixerConfigurationResolver([
|
||||
(new FixerOptionBuilder('sort_algorithm', 'Whether the types should be sorted alphabetically, or not sorted.'))
|
||||
->setAllowedValues(['alpha', 'none'])
|
||||
->setDefault('alpha')
|
||||
->getOption(),
|
||||
(new FixerOptionBuilder('null_adjustment', 'Forces the position of `null` (overrides `sort_algorithm`).'))
|
||||
->setAllowedValues(['always_first', 'always_last', 'none'])
|
||||
->setDefault('always_first')
|
||||
->getOption(),
|
||||
(new FixerOptionBuilder('case_sensitive', 'Whether the sorting should be case sensitive.'))
|
||||
->setAllowedTypes(['bool'])
|
||||
->setDefault(false)
|
||||
->getOption(),
|
||||
]);
|
||||
}
|
||||
|
||||
protected function applyFix(\SplFileInfo $file, Tokens $tokens): void
|
||||
{
|
||||
$functionsAnalyzer = new FunctionsAnalyzer();
|
||||
|
||||
foreach ($this->getElements($tokens) as $index => $type) {
|
||||
if ('catch' === $type) {
|
||||
$this->fixCatchArgumentType($tokens, $index);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if ('property' === $type) {
|
||||
$this->fixPropertyType($tokens, $index);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
$this->fixMethodArgumentType($functionsAnalyzer, $tokens, $index);
|
||||
$this->fixMethodReturnType($functionsAnalyzer, $tokens, $index);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<int, string>
|
||||
*
|
||||
* @phpstan-return array<int, 'catch'|'method'|'property'>
|
||||
*/
|
||||
private function getElements(Tokens $tokens): array
|
||||
{
|
||||
$tokensAnalyzer = new TokensAnalyzer($tokens);
|
||||
|
||||
$elements = array_map(
|
||||
static fn (array $element): string => $element['type'],
|
||||
array_filter(
|
||||
$tokensAnalyzer->getClassyElements(),
|
||||
static fn (array $element): bool => \in_array($element['type'], ['method', 'property'], true)
|
||||
)
|
||||
);
|
||||
|
||||
foreach ($tokens as $index => $token) {
|
||||
if ($token->isGivenKind(T_CATCH)) {
|
||||
$elements[$index] = 'catch';
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (
|
||||
$token->isGivenKind(T_FN)
|
||||
|| ($token->isGivenKind(T_FUNCTION) && !isset($elements[$index]))
|
||||
) {
|
||||
$elements[$index] = 'method';
|
||||
}
|
||||
}
|
||||
|
||||
return $elements;
|
||||
}
|
||||
|
||||
private function collectTypeAnalysis(Tokens $tokens, int $startIndex, int $endIndex): ?TypeAnalysis
|
||||
{
|
||||
$type = '';
|
||||
$typeStartIndex = $tokens->getNextMeaningfulToken($startIndex);
|
||||
$typeEndIndex = $typeStartIndex;
|
||||
|
||||
for ($i = $typeStartIndex; $i < $endIndex; ++$i) {
|
||||
if ($tokens[$i]->isWhitespace() || $tokens[$i]->isComment()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$type .= $tokens[$i]->getContent();
|
||||
$typeEndIndex = $i;
|
||||
}
|
||||
|
||||
return '' !== $type ? new TypeAnalysis($type, $typeStartIndex, $typeEndIndex) : null;
|
||||
}
|
||||
|
||||
private function fixCatchArgumentType(Tokens $tokens, int $index): void
|
||||
{
|
||||
$catchStart = $tokens->getNextTokenOfKind($index, ['(']);
|
||||
$catchEnd = $tokens->getNextTokenOfKind($catchStart, [')', [T_VARIABLE]]);
|
||||
|
||||
$catchArgumentType = $this->collectTypeAnalysis($tokens, $catchStart, $catchEnd);
|
||||
|
||||
if (null === $catchArgumentType || !$this->isTypeSortable($catchArgumentType)) {
|
||||
return; // nothing to fix
|
||||
}
|
||||
|
||||
$this->sortTypes($catchArgumentType, $tokens);
|
||||
}
|
||||
|
||||
private function fixPropertyType(Tokens $tokens, int $index): void
|
||||
{
|
||||
$propertyIndex = $index;
|
||||
$propertyModifiers = [T_PRIVATE, T_PROTECTED, T_PUBLIC, T_STATIC, T_VAR];
|
||||
|
||||
if (\defined('T_READONLY')) {
|
||||
$propertyModifiers[] = T_READONLY; // @TODO drop condition when PHP 8.1 is supported
|
||||
}
|
||||
|
||||
do {
|
||||
$index = $tokens->getPrevMeaningfulToken($index);
|
||||
} while (!$tokens[$index]->isGivenKind($propertyModifiers));
|
||||
|
||||
$propertyType = $this->collectTypeAnalysis($tokens, $index, $propertyIndex);
|
||||
|
||||
if (null === $propertyType || !$this->isTypeSortable($propertyType)) {
|
||||
return; // nothing to fix
|
||||
}
|
||||
|
||||
$this->sortTypes($propertyType, $tokens);
|
||||
}
|
||||
|
||||
private function fixMethodArgumentType(FunctionsAnalyzer $functionsAnalyzer, Tokens $tokens, int $index): void
|
||||
{
|
||||
foreach ($functionsAnalyzer->getFunctionArguments($tokens, $index) as $argumentInfo) {
|
||||
$argumentType = $argumentInfo->getTypeAnalysis();
|
||||
|
||||
if (null === $argumentType || !$this->isTypeSortable($argumentType)) {
|
||||
continue; // nothing to fix
|
||||
}
|
||||
|
||||
$this->sortTypes($argumentType, $tokens);
|
||||
}
|
||||
}
|
||||
|
||||
private function fixMethodReturnType(FunctionsAnalyzer $functionsAnalyzer, Tokens $tokens, int $index): void
|
||||
{
|
||||
$returnType = $functionsAnalyzer->getFunctionReturnType($tokens, $index);
|
||||
|
||||
if (null === $returnType || !$this->isTypeSortable($returnType)) {
|
||||
return; // nothing to fix
|
||||
}
|
||||
|
||||
$this->sortTypes($returnType, $tokens);
|
||||
}
|
||||
|
||||
private function sortTypes(TypeAnalysis $typeAnalysis, Tokens $tokens): void
|
||||
{
|
||||
$type = $typeAnalysis->getName();
|
||||
|
||||
if (str_contains($type, '|') && str_contains($type, '&')) {
|
||||
// a DNF type of the form (A&B)|C, available as of PHP 8.2
|
||||
[$originalTypes, $glue] = $this->collectDisjunctiveNormalFormTypes($type);
|
||||
} else {
|
||||
[$originalTypes, $glue] = $this->collectUnionOrIntersectionTypes($type);
|
||||
}
|
||||
|
||||
// If the $types array is coming from a DNF type, then we have parts
|
||||
// which are also array. If so, we sort those sub-types first before
|
||||
// running the sorting algorithm to the entire $types array.
|
||||
$sortedTypes = array_map(function ($subType) {
|
||||
if (\is_array($subType)) {
|
||||
return $this->runTypesThroughSortingAlgorithm($subType);
|
||||
}
|
||||
|
||||
return $subType;
|
||||
}, $originalTypes);
|
||||
|
||||
$sortedTypes = $this->runTypesThroughSortingAlgorithm($sortedTypes);
|
||||
|
||||
if ($sortedTypes === $originalTypes) {
|
||||
return;
|
||||
}
|
||||
|
||||
$tokens->overrideRange(
|
||||
$typeAnalysis->getStartIndex(),
|
||||
$typeAnalysis->getEndIndex(),
|
||||
$this->createTypeDeclarationTokens($sortedTypes, $glue)
|
||||
);
|
||||
}
|
||||
|
||||
private function isTypeSortable(TypeAnalysis $type): bool
|
||||
{
|
||||
return str_contains($type->getName(), '|') || str_contains($type->getName(), '&');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array{0: array<string|string[]>, 1: string}
|
||||
*/
|
||||
private function collectDisjunctiveNormalFormTypes(string $type): array
|
||||
{
|
||||
$types = array_map(static function ($subType) {
|
||||
if (str_starts_with($subType, '(')) {
|
||||
return explode('&', trim($subType, '()'));
|
||||
}
|
||||
|
||||
return $subType;
|
||||
}, explode('|', $type));
|
||||
|
||||
return [$types, '|'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array{0: string[], 1: string}
|
||||
*/
|
||||
private function collectUnionOrIntersectionTypes(string $type): array
|
||||
{
|
||||
$types = explode('|', $type);
|
||||
$glue = '|';
|
||||
|
||||
if (1 === \count($types)) {
|
||||
$types = explode('&', $type);
|
||||
$glue = '&';
|
||||
}
|
||||
|
||||
return [$types, $glue];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string|string[]> $types
|
||||
*
|
||||
* @return array<string|string[]>
|
||||
*/
|
||||
private function runTypesThroughSortingAlgorithm(array $types): array
|
||||
{
|
||||
$normalizeType = static fn (string $type): string => Preg::replace('/^\\\\?/', '', $type);
|
||||
|
||||
usort($types, function ($a, $b) use ($normalizeType): int {
|
||||
if (\is_array($a)) {
|
||||
$a = implode('&', $a);
|
||||
}
|
||||
|
||||
if (\is_array($b)) {
|
||||
$b = implode('&', $b);
|
||||
}
|
||||
|
||||
$a = $normalizeType($a);
|
||||
$b = $normalizeType($b);
|
||||
$lowerCaseA = strtolower($a);
|
||||
$lowerCaseB = strtolower($b);
|
||||
|
||||
if ('none' !== $this->configuration['null_adjustment']) {
|
||||
if ('null' === $lowerCaseA && 'null' !== $lowerCaseB) {
|
||||
return 'always_last' === $this->configuration['null_adjustment'] ? 1 : -1;
|
||||
}
|
||||
|
||||
if ('null' !== $lowerCaseA && 'null' === $lowerCaseB) {
|
||||
return 'always_last' === $this->configuration['null_adjustment'] ? -1 : 1;
|
||||
}
|
||||
}
|
||||
|
||||
if ('alpha' === $this->configuration['sort_algorithm']) {
|
||||
return $this->configuration['case_sensitive'] ? strcmp($a, $b) : strcasecmp($a, $b);
|
||||
}
|
||||
|
||||
return 0;
|
||||
});
|
||||
|
||||
return $types;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<int, string|string[]> $types
|
||||
*
|
||||
* @return array<int, Token>
|
||||
*/
|
||||
private function createTypeDeclarationTokens(array $types, string $glue, bool $isDisjunctive = false): array
|
||||
{
|
||||
static $specialTypes = [
|
||||
'array' => [CT::T_ARRAY_TYPEHINT, 'array'],
|
||||
'callable' => [T_CALLABLE, 'callable'],
|
||||
'static' => [T_STATIC, 'static'],
|
||||
];
|
||||
|
||||
static $glues = [
|
||||
'|' => [CT::T_TYPE_ALTERNATION, '|'],
|
||||
'&' => [CT::T_TYPE_INTERSECTION, '&'],
|
||||
];
|
||||
|
||||
$count = \count($types);
|
||||
$newTokens = [];
|
||||
|
||||
foreach ($types as $i => $type) {
|
||||
if (\is_array($type)) {
|
||||
$newTokens = [
|
||||
...$newTokens,
|
||||
...$this->createTypeDeclarationTokens($type, '&', true),
|
||||
];
|
||||
} elseif (isset($specialTypes[$type])) {
|
||||
$newTokens[] = new Token($specialTypes[$type]);
|
||||
} else {
|
||||
foreach (explode('\\', $type) as $nsIndex => $value) {
|
||||
if (0 === $nsIndex && '' === $value) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($nsIndex > 0) {
|
||||
$newTokens[] = new Token([T_NS_SEPARATOR, '\\']);
|
||||
}
|
||||
|
||||
$newTokens[] = new Token([T_STRING, $value]);
|
||||
}
|
||||
}
|
||||
|
||||
if ($i <= $count - 2) {
|
||||
$newTokens[] = new Token($glues[$glue]);
|
||||
}
|
||||
}
|
||||
|
||||
if ($isDisjunctive) {
|
||||
array_unshift($newTokens, new Token([CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_OPEN, '(']));
|
||||
$newTokens[] = new Token([CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_CLOSE, ')']);
|
||||
}
|
||||
|
||||
return $newTokens;
|
||||
}
|
||||
}
|
||||
332
vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/NullableTypeDeclarationFixer.php
vendored
Normal file
332
vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/NullableTypeDeclarationFixer.php
vendored
Normal file
@ -0,0 +1,332 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* This file is part of PHP CS Fixer.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
|
||||
*
|
||||
* This source file is subject to the MIT license that is bundled
|
||||
* with this source code in the file LICENSE.
|
||||
*/
|
||||
|
||||
namespace PhpCsFixer\Fixer\LanguageConstruct;
|
||||
|
||||
use PhpCsFixer\AbstractFixer;
|
||||
use PhpCsFixer\Fixer\ConfigurableFixerInterface;
|
||||
use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver;
|
||||
use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface;
|
||||
use PhpCsFixer\FixerConfiguration\FixerOptionBuilder;
|
||||
use PhpCsFixer\FixerDefinition\FixerDefinition;
|
||||
use PhpCsFixer\FixerDefinition\FixerDefinitionInterface;
|
||||
use PhpCsFixer\FixerDefinition\VersionSpecification;
|
||||
use PhpCsFixer\FixerDefinition\VersionSpecificCodeSample;
|
||||
use PhpCsFixer\Preg;
|
||||
use PhpCsFixer\Tokenizer\Analyzer\Analysis\TypeAnalysis;
|
||||
use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer;
|
||||
use PhpCsFixer\Tokenizer\CT;
|
||||
use PhpCsFixer\Tokenizer\Token;
|
||||
use PhpCsFixer\Tokenizer\Tokens;
|
||||
use PhpCsFixer\Tokenizer\TokensAnalyzer;
|
||||
|
||||
/**
|
||||
* @author John Paul E. Balandan, CPA <paulbalandan@gmail.com>
|
||||
*/
|
||||
final class NullableTypeDeclarationFixer extends AbstractFixer implements ConfigurableFixerInterface
|
||||
{
|
||||
private const OPTION_SYNTAX_UNION = 'union';
|
||||
private const OPTION_SYNTAX_QUESTION_MARK = 'question_mark';
|
||||
|
||||
private int $candidateTokenKind;
|
||||
|
||||
public function getDefinition(): FixerDefinitionInterface
|
||||
{
|
||||
return new FixerDefinition(
|
||||
'Nullable single type declaration should be standardised using configured syntax.',
|
||||
[
|
||||
new VersionSpecificCodeSample(
|
||||
"<?php\nfunction bar(null|int \$value, null|\\Closure \$callable): void {}\n",
|
||||
new VersionSpecification(8_00_00)
|
||||
),
|
||||
new VersionSpecificCodeSample(
|
||||
"<?php\nfunction baz(?int \$value, ?\\stdClass \$obj, ?array \$config): ?int {}\n",
|
||||
new VersionSpecification(8_00_00),
|
||||
['syntax' => self::OPTION_SYNTAX_UNION]
|
||||
),
|
||||
new VersionSpecificCodeSample(
|
||||
'<?php
|
||||
class ValueObject
|
||||
{
|
||||
public null|string $name;
|
||||
public ?int $count;
|
||||
public null|bool $internal;
|
||||
public null|\Closure $callback;
|
||||
}
|
||||
',
|
||||
new VersionSpecification(8_00_00),
|
||||
['syntax' => self::OPTION_SYNTAX_QUESTION_MARK]
|
||||
),
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public function isCandidate(Tokens $tokens): bool
|
||||
{
|
||||
return \PHP_VERSION_ID >= 8_00_00 && $tokens->isTokenKindFound($this->candidateTokenKind);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*
|
||||
* Must run before OrderedTypesFixer, TypesSpacesFixer.
|
||||
* Must run after NullableTypeDeclarationForDefaultNullValueFixer, SingleSpaceAroundConstructFixer.
|
||||
*/
|
||||
public function getPriority(): int
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
|
||||
public function configure(array $configuration): void
|
||||
{
|
||||
parent::configure($configuration);
|
||||
|
||||
$this->candidateTokenKind = self::OPTION_SYNTAX_QUESTION_MARK === $this->configuration['syntax']
|
||||
? CT::T_TYPE_ALTERNATION // `|` -> `?`
|
||||
: CT::T_NULLABLE_TYPE; // `?` -> `|`
|
||||
}
|
||||
|
||||
protected function createConfigurationDefinition(): FixerConfigurationResolverInterface
|
||||
{
|
||||
return new FixerConfigurationResolver([
|
||||
(new FixerOptionBuilder('syntax', 'Whether to use question mark (`?`) or explicit `null` union for nullable type.'))
|
||||
->setAllowedValues([self::OPTION_SYNTAX_UNION, self::OPTION_SYNTAX_QUESTION_MARK])
|
||||
->setDefault(self::OPTION_SYNTAX_QUESTION_MARK)
|
||||
->getOption(),
|
||||
]);
|
||||
}
|
||||
|
||||
protected function applyFix(\SplFileInfo $file, Tokens $tokens): void
|
||||
{
|
||||
$functionsAnalyzer = new FunctionsAnalyzer();
|
||||
|
||||
foreach (array_reverse($this->getElements($tokens), true) as $index => $type) {
|
||||
if ('property' === $type) {
|
||||
$this->normalizePropertyType($tokens, $index);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
$this->normalizeMethodReturnType($functionsAnalyzer, $tokens, $index);
|
||||
$this->normalizeMethodArgumentType($functionsAnalyzer, $tokens, $index);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<int, string>
|
||||
*
|
||||
* @phpstan-return array<int, 'function'|'property'>
|
||||
*/
|
||||
private function getElements(Tokens $tokens): array
|
||||
{
|
||||
$tokensAnalyzer = new TokensAnalyzer($tokens);
|
||||
|
||||
$elements = array_map(
|
||||
static fn (array $element): string => 'method' === $element['type'] ? 'function' : $element['type'],
|
||||
array_filter(
|
||||
$tokensAnalyzer->getClassyElements(),
|
||||
static fn (array $element): bool => \in_array($element['type'], ['method', 'property'], true)
|
||||
)
|
||||
);
|
||||
|
||||
foreach ($tokens as $index => $token) {
|
||||
if (
|
||||
$token->isGivenKind(T_FN)
|
||||
|| ($token->isGivenKind(T_FUNCTION) && !isset($elements[$index]))
|
||||
) {
|
||||
$elements[$index] = 'function';
|
||||
}
|
||||
}
|
||||
|
||||
return $elements;
|
||||
}
|
||||
|
||||
private function collectTypeAnalysis(Tokens $tokens, int $startIndex, int $endIndex): ?TypeAnalysis
|
||||
{
|
||||
$type = '';
|
||||
$typeStartIndex = $tokens->getNextMeaningfulToken($startIndex);
|
||||
$typeEndIndex = $typeStartIndex;
|
||||
|
||||
for ($i = $typeStartIndex; $i < $endIndex; ++$i) {
|
||||
if ($tokens[$i]->isWhitespace() || $tokens[$i]->isComment()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$type .= $tokens[$i]->getContent();
|
||||
$typeEndIndex = $i;
|
||||
}
|
||||
|
||||
return '' !== $type ? new TypeAnalysis($type, $typeStartIndex, $typeEndIndex) : null;
|
||||
}
|
||||
|
||||
private function isTypeNormalizable(TypeAnalysis $typeAnalysis): bool
|
||||
{
|
||||
if (!$typeAnalysis->isNullable()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$type = $typeAnalysis->getName();
|
||||
|
||||
if (str_contains($type, '&')) {
|
||||
return false; // skip DNF types
|
||||
}
|
||||
|
||||
if (!str_contains($type, '|')) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return 1 === substr_count($type, '|') && Preg::match('/(?:\|null$|^null\|)/i', $type);
|
||||
}
|
||||
|
||||
private function normalizePropertyType(Tokens $tokens, int $index): void
|
||||
{
|
||||
$propertyEndIndex = $index;
|
||||
$propertyModifiers = [T_PRIVATE, T_PROTECTED, T_PUBLIC, T_STATIC, T_VAR];
|
||||
|
||||
if (\defined('T_READONLY')) {
|
||||
$propertyModifiers[] = T_READONLY; // @TODO: Drop condition when PHP 8.1+ is required
|
||||
}
|
||||
|
||||
do {
|
||||
$index = $tokens->getPrevMeaningfulToken($index);
|
||||
} while (!$tokens[$index]->isGivenKind($propertyModifiers));
|
||||
|
||||
$propertyType = $this->collectTypeAnalysis($tokens, $index, $propertyEndIndex);
|
||||
|
||||
if (null === $propertyType || !$this->isTypeNormalizable($propertyType)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->normalizeNullableType($tokens, $propertyType);
|
||||
}
|
||||
|
||||
private function normalizeMethodArgumentType(FunctionsAnalyzer $functionsAnalyzer, Tokens $tokens, int $index): void
|
||||
{
|
||||
foreach (array_reverse($functionsAnalyzer->getFunctionArguments($tokens, $index), true) as $argumentInfo) {
|
||||
$argumentType = $argumentInfo->getTypeAnalysis();
|
||||
|
||||
if (null === $argumentType || !$this->isTypeNormalizable($argumentType)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$this->normalizeNullableType($tokens, $argumentType);
|
||||
}
|
||||
}
|
||||
|
||||
private function normalizeMethodReturnType(FunctionsAnalyzer $functionsAnalyzer, Tokens $tokens, int $index): void
|
||||
{
|
||||
$returnType = $functionsAnalyzer->getFunctionReturnType($tokens, $index);
|
||||
|
||||
if (null === $returnType || !$this->isTypeNormalizable($returnType)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->normalizeNullableType($tokens, $returnType);
|
||||
}
|
||||
|
||||
private function normalizeNullableType(Tokens $tokens, TypeAnalysis $typeAnalysis): void
|
||||
{
|
||||
$type = $typeAnalysis->getName();
|
||||
|
||||
if (!str_contains($type, '|') && !str_contains($type, '&')) {
|
||||
$type = ($typeAnalysis->isNullable() ? '?' : '').$type;
|
||||
}
|
||||
|
||||
$isQuestionMarkSyntax = self::OPTION_SYNTAX_QUESTION_MARK === $this->configuration['syntax'];
|
||||
|
||||
if ($isQuestionMarkSyntax) {
|
||||
$normalizedType = $this->convertToNullableType($type);
|
||||
$normalizedTypeAsString = implode('', $normalizedType);
|
||||
} else {
|
||||
$normalizedType = $this->convertToExplicitUnionType($type);
|
||||
$normalizedTypeAsString = implode('|', $normalizedType);
|
||||
}
|
||||
|
||||
if ($normalizedTypeAsString === $type) {
|
||||
return; // nothing to fix
|
||||
}
|
||||
|
||||
$tokens->overrideRange(
|
||||
$typeAnalysis->getStartIndex(),
|
||||
$typeAnalysis->getEndIndex(),
|
||||
$this->createTypeDeclarationTokens($normalizedType, $isQuestionMarkSyntax)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return list<string>
|
||||
*/
|
||||
private function convertToNullableType(string $type): array
|
||||
{
|
||||
if (str_starts_with($type, '?')) {
|
||||
return [$type]; // no need to convert; already fixed
|
||||
}
|
||||
|
||||
return ['?', Preg::replace('/(?:\|null$|^null\|)/i', '', $type)];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return list<string>
|
||||
*/
|
||||
private function convertToExplicitUnionType(string $type): array
|
||||
{
|
||||
if (str_contains($type, '|')) {
|
||||
return [$type]; // no need to convert; already fixed
|
||||
}
|
||||
|
||||
return ['null', substr($type, 1)];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param list<string> $types
|
||||
*
|
||||
* @return list<Token>
|
||||
*/
|
||||
private function createTypeDeclarationTokens(array $types, bool $isQuestionMarkSyntax): array
|
||||
{
|
||||
static $specialTypes = [
|
||||
'?' => [CT::T_NULLABLE_TYPE, '?'],
|
||||
'array' => [CT::T_ARRAY_TYPEHINT, 'array'],
|
||||
'callable' => [T_CALLABLE, 'callable'],
|
||||
'static' => [T_STATIC, 'static'],
|
||||
];
|
||||
|
||||
$count = \count($types);
|
||||
$newTokens = [];
|
||||
|
||||
foreach ($types as $index => $type) {
|
||||
if (isset($specialTypes[$type])) {
|
||||
$newTokens[] = new Token($specialTypes[$type]);
|
||||
} else {
|
||||
foreach (explode('\\', $type) as $nsIndex => $value) {
|
||||
if (0 === $nsIndex && '' === $value) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($nsIndex > 0) {
|
||||
$newTokens[] = new Token([T_NS_SEPARATOR, '\\']);
|
||||
}
|
||||
|
||||
$newTokens[] = new Token([T_STRING, $value]);
|
||||
}
|
||||
}
|
||||
|
||||
if ($index <= $count - 2 && !$isQuestionMarkSyntax) {
|
||||
$newTokens[] = new Token([CT::T_TYPE_ALTERNATION, '|']);
|
||||
}
|
||||
}
|
||||
|
||||
return $newTokens;
|
||||
}
|
||||
}
|
||||
450
vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/SingleSpaceAroundConstructFixer.php
vendored
Normal file
450
vendor/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/SingleSpaceAroundConstructFixer.php
vendored
Normal file
@ -0,0 +1,450 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* This file is part of PHP CS Fixer.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
|
||||
*
|
||||
* This source file is subject to the MIT license that is bundled
|
||||
* with this source code in the file LICENSE.
|
||||
*/
|
||||
|
||||
namespace PhpCsFixer\Fixer\LanguageConstruct;
|
||||
|
||||
use PhpCsFixer\AbstractFixer;
|
||||
use PhpCsFixer\Fixer\ConfigurableFixerInterface;
|
||||
use PhpCsFixer\FixerConfiguration\AllowedValueSubset;
|
||||
use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver;
|
||||
use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface;
|
||||
use PhpCsFixer\FixerConfiguration\FixerOptionBuilder;
|
||||
use PhpCsFixer\FixerDefinition\CodeSample;
|
||||
use PhpCsFixer\FixerDefinition\FixerDefinition;
|
||||
use PhpCsFixer\FixerDefinition\FixerDefinitionInterface;
|
||||
use PhpCsFixer\Preg;
|
||||
use PhpCsFixer\Tokenizer\CT;
|
||||
use PhpCsFixer\Tokenizer\Token;
|
||||
use PhpCsFixer\Tokenizer\Tokens;
|
||||
|
||||
/**
|
||||
* @author Andreas Möller <am@localheinz.com>
|
||||
* @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
|
||||
*/
|
||||
final class SingleSpaceAroundConstructFixer extends AbstractFixer implements ConfigurableFixerInterface
|
||||
{
|
||||
/**
|
||||
* @var array<string, null|int>
|
||||
*/
|
||||
private static array $tokenMapContainASingleSpace = [
|
||||
// for now, only one case - but we are ready to extend it, when we learn about new cases to cover
|
||||
'yield_from' => T_YIELD_FROM,
|
||||
];
|
||||
|
||||
/**
|
||||
* @var array<string, null|int>
|
||||
*/
|
||||
private static array $tokenMapPrecededByASingleSpace = [
|
||||
'as' => T_AS,
|
||||
'use_lambda' => CT::T_USE_LAMBDA,
|
||||
];
|
||||
|
||||
/**
|
||||
* @var array<string, null|int>
|
||||
*/
|
||||
private static array $tokenMapFollowedByASingleSpace = [
|
||||
'abstract' => T_ABSTRACT,
|
||||
'as' => T_AS,
|
||||
'attribute' => CT::T_ATTRIBUTE_CLOSE,
|
||||
'break' => T_BREAK,
|
||||
'case' => T_CASE,
|
||||
'catch' => T_CATCH,
|
||||
'class' => T_CLASS,
|
||||
'clone' => T_CLONE,
|
||||
'comment' => T_COMMENT,
|
||||
'const' => T_CONST,
|
||||
'const_import' => CT::T_CONST_IMPORT,
|
||||
'continue' => T_CONTINUE,
|
||||
'do' => T_DO,
|
||||
'echo' => T_ECHO,
|
||||
'else' => T_ELSE,
|
||||
'elseif' => T_ELSEIF,
|
||||
'enum' => null,
|
||||
'extends' => T_EXTENDS,
|
||||
'final' => T_FINAL,
|
||||
'finally' => T_FINALLY,
|
||||
'for' => T_FOR,
|
||||
'foreach' => T_FOREACH,
|
||||
'function' => T_FUNCTION,
|
||||
'function_import' => CT::T_FUNCTION_IMPORT,
|
||||
'global' => T_GLOBAL,
|
||||
'goto' => T_GOTO,
|
||||
'if' => T_IF,
|
||||
'implements' => T_IMPLEMENTS,
|
||||
'include' => T_INCLUDE,
|
||||
'include_once' => T_INCLUDE_ONCE,
|
||||
'instanceof' => T_INSTANCEOF,
|
||||
'insteadof' => T_INSTEADOF,
|
||||
'interface' => T_INTERFACE,
|
||||
'match' => null,
|
||||
'named_argument' => CT::T_NAMED_ARGUMENT_COLON,
|
||||
'namespace' => T_NAMESPACE,
|
||||
'new' => T_NEW,
|
||||
'open_tag_with_echo' => T_OPEN_TAG_WITH_ECHO,
|
||||
'php_doc' => T_DOC_COMMENT,
|
||||
'php_open' => T_OPEN_TAG,
|
||||
'print' => T_PRINT,
|
||||
'private' => T_PRIVATE,
|
||||
'protected' => T_PROTECTED,
|
||||
'public' => T_PUBLIC,
|
||||
'readonly' => null,
|
||||
'require' => T_REQUIRE,
|
||||
'require_once' => T_REQUIRE_ONCE,
|
||||
'return' => T_RETURN,
|
||||
'static' => T_STATIC,
|
||||
'switch' => T_SWITCH,
|
||||
'throw' => T_THROW,
|
||||
'trait' => T_TRAIT,
|
||||
'try' => T_TRY,
|
||||
'type_colon' => CT::T_TYPE_COLON,
|
||||
'use' => T_USE,
|
||||
'use_lambda' => CT::T_USE_LAMBDA,
|
||||
'use_trait' => CT::T_USE_TRAIT,
|
||||
'var' => T_VAR,
|
||||
'while' => T_WHILE,
|
||||
'yield' => T_YIELD,
|
||||
'yield_from' => T_YIELD_FROM,
|
||||
];
|
||||
|
||||
/**
|
||||
* @var array<string, int>
|
||||
*/
|
||||
private array $fixTokenMapFollowedByASingleSpace = [];
|
||||
|
||||
/**
|
||||
* @var array<string, int>
|
||||
*/
|
||||
private array $fixTokenMapContainASingleSpace = [];
|
||||
|
||||
/**
|
||||
* @var array<string, int>
|
||||
*/
|
||||
private array $fixTokenMapPrecededByASingleSpace = [];
|
||||
|
||||
public function configure(array $configuration): void
|
||||
{
|
||||
parent::configure($configuration);
|
||||
|
||||
if (\defined('T_MATCH')) { // @TODO: drop condition when PHP 8.0+ is required
|
||||
self::$tokenMapFollowedByASingleSpace['match'] = T_MATCH;
|
||||
}
|
||||
|
||||
if (\defined('T_READONLY')) { // @TODO: drop condition when PHP 8.1+ is required
|
||||
self::$tokenMapFollowedByASingleSpace['readonly'] = T_READONLY;
|
||||
}
|
||||
|
||||
if (\defined('T_ENUM')) { // @TODO: drop condition when PHP 8.1+ is required
|
||||
self::$tokenMapFollowedByASingleSpace['enum'] = T_ENUM;
|
||||
}
|
||||
|
||||
$this->fixTokenMapContainASingleSpace = [];
|
||||
|
||||
foreach ($this->configuration['constructs_contain_a_single_space'] as $key) {
|
||||
if (null !== self::$tokenMapContainASingleSpace[$key]) {
|
||||
$this->fixTokenMapContainASingleSpace[$key] = self::$tokenMapContainASingleSpace[$key];
|
||||
}
|
||||
}
|
||||
|
||||
$this->fixTokenMapPrecededByASingleSpace = [];
|
||||
|
||||
foreach ($this->configuration['constructs_preceded_by_a_single_space'] as $key) {
|
||||
if (null !== self::$tokenMapPrecededByASingleSpace[$key]) {
|
||||
$this->fixTokenMapPrecededByASingleSpace[$key] = self::$tokenMapPrecededByASingleSpace[$key];
|
||||
}
|
||||
}
|
||||
|
||||
$this->fixTokenMapFollowedByASingleSpace = [];
|
||||
|
||||
foreach ($this->configuration['constructs_followed_by_a_single_space'] as $key) {
|
||||
if (null !== self::$tokenMapFollowedByASingleSpace[$key]) {
|
||||
$this->fixTokenMapFollowedByASingleSpace[$key] = self::$tokenMapFollowedByASingleSpace[$key];
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($this->fixTokenMapFollowedByASingleSpace['public'])) {
|
||||
$this->fixTokenMapFollowedByASingleSpace['constructor_public'] = CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PUBLIC;
|
||||
}
|
||||
|
||||
if (isset($this->fixTokenMapFollowedByASingleSpace['protected'])) {
|
||||
$this->fixTokenMapFollowedByASingleSpace['constructor_protected'] = CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PROTECTED;
|
||||
}
|
||||
|
||||
if (isset($this->fixTokenMapFollowedByASingleSpace['private'])) {
|
||||
$this->fixTokenMapFollowedByASingleSpace['constructor_private'] = CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PRIVATE;
|
||||
}
|
||||
}
|
||||
|
||||
public function getDefinition(): FixerDefinitionInterface
|
||||
{
|
||||
return new FixerDefinition(
|
||||
'Ensures a single space after language constructs.',
|
||||
[
|
||||
new CodeSample(
|
||||
'<?php
|
||||
|
||||
throw new \Exception();
|
||||
'
|
||||
),
|
||||
new CodeSample(
|
||||
'<?php
|
||||
|
||||
function foo() { yield from baz(); }
|
||||
',
|
||||
[
|
||||
'constructs_contain_a_single_space' => [
|
||||
'yield_from',
|
||||
],
|
||||
'constructs_followed_by_a_single_space' => [
|
||||
'yield_from',
|
||||
],
|
||||
]
|
||||
),
|
||||
|
||||
new CodeSample(
|
||||
'<?php
|
||||
|
||||
$foo = function& ()use($bar) {
|
||||
};
|
||||
',
|
||||
[
|
||||
'constructs_preceded_by_a_single_space' => [
|
||||
'use_lambda',
|
||||
],
|
||||
'constructs_followed_by_a_single_space' => [
|
||||
'use_lambda',
|
||||
],
|
||||
]
|
||||
),
|
||||
new CodeSample(
|
||||
'<?php
|
||||
|
||||
echo "Hello!";
|
||||
',
|
||||
[
|
||||
'constructs_followed_by_a_single_space' => [
|
||||
'echo',
|
||||
],
|
||||
]
|
||||
),
|
||||
new CodeSample(
|
||||
'<?php
|
||||
|
||||
yield from baz();
|
||||
',
|
||||
[
|
||||
'constructs_followed_by_a_single_space' => [
|
||||
'yield_from',
|
||||
],
|
||||
]
|
||||
),
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*
|
||||
* Must run before BracesFixer, FunctionDeclarationFixer, NullableTypeDeclarationFixer.
|
||||
* Must run after ModernizeStrposFixer.
|
||||
*/
|
||||
public function getPriority(): int
|
||||
{
|
||||
return 36;
|
||||
}
|
||||
|
||||
public function isCandidate(Tokens $tokens): bool
|
||||
{
|
||||
$tokenKinds = [
|
||||
...array_values($this->fixTokenMapContainASingleSpace),
|
||||
...array_values($this->fixTokenMapPrecededByASingleSpace),
|
||||
...array_values($this->fixTokenMapFollowedByASingleSpace),
|
||||
];
|
||||
|
||||
return $tokens->isAnyTokenKindsFound($tokenKinds) && !$tokens->hasAlternativeSyntax();
|
||||
}
|
||||
|
||||
protected function applyFix(\SplFileInfo $file, Tokens $tokens): void
|
||||
{
|
||||
$tokenKindsContainASingleSpace = array_values($this->fixTokenMapContainASingleSpace);
|
||||
|
||||
for ($index = $tokens->count() - 1; $index > 0; --$index) {
|
||||
if ($tokens[$index]->isGivenKind($tokenKindsContainASingleSpace)) {
|
||||
$token = $tokens[$index];
|
||||
|
||||
if (
|
||||
$token->isGivenKind(T_YIELD_FROM)
|
||||
&& 'yield from' !== strtolower($token->getContent())
|
||||
) {
|
||||
$tokens[$index] = new Token([T_YIELD_FROM, Preg::replace(
|
||||
'/\s+/',
|
||||
' ',
|
||||
$token->getContent()
|
||||
)]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$tokenKindsPrecededByASingleSpace = array_values($this->fixTokenMapPrecededByASingleSpace);
|
||||
|
||||
for ($index = $tokens->count() - 1; $index > 0; --$index) {
|
||||
if ($tokens[$index]->isGivenKind($tokenKindsPrecededByASingleSpace)) {
|
||||
$tokens->ensureWhitespaceAtIndex($index - 1, 1, ' ');
|
||||
}
|
||||
}
|
||||
|
||||
$tokenKindsFollowedByASingleSpace = array_values($this->fixTokenMapFollowedByASingleSpace);
|
||||
|
||||
for ($index = $tokens->count() - 2; $index >= 0; --$index) {
|
||||
$token = $tokens[$index];
|
||||
|
||||
if (!$token->isGivenKind($tokenKindsFollowedByASingleSpace)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$whitespaceTokenIndex = $index + 1;
|
||||
|
||||
if ($tokens[$whitespaceTokenIndex]->equalsAny([',', ';', ')', [CT::T_ARRAY_SQUARE_BRACE_CLOSE], [CT::T_DESTRUCTURING_SQUARE_BRACE_CLOSE]])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (
|
||||
$token->isGivenKind(T_STATIC)
|
||||
&& !$tokens[$tokens->getNextMeaningfulToken($index)]->isGivenKind([T_FN, T_FUNCTION, T_NS_SEPARATOR, T_STRING, T_VARIABLE, CT::T_ARRAY_TYPEHINT, CT::T_NULLABLE_TYPE])
|
||||
) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($token->isGivenKind(T_OPEN_TAG)) {
|
||||
if ($tokens[$whitespaceTokenIndex]->equals([T_WHITESPACE]) && !str_contains($tokens[$whitespaceTokenIndex]->getContent(), "\n") && !str_contains($token->getContent(), "\n")) {
|
||||
$tokens->clearAt($whitespaceTokenIndex);
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($token->isGivenKind(T_CLASS) && $tokens[$tokens->getNextMeaningfulToken($index)]->equals('(')) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($token->isGivenKind([T_EXTENDS, T_IMPLEMENTS]) && $this->isMultilineExtendsOrImplementsWithMoreThanOneAncestor($tokens, $index)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($token->isGivenKind(T_RETURN) && $this->isMultiLineReturn($tokens, $index)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($token->isGivenKind(T_CONST) && $this->isMultilineConstant($tokens, $index)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($token->isComment() || $token->isGivenKind(CT::T_ATTRIBUTE_CLOSE)) {
|
||||
if ($tokens[$whitespaceTokenIndex]->equals([T_WHITESPACE]) && str_contains($tokens[$whitespaceTokenIndex]->getContent(), "\n")) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
$tokens->ensureWhitespaceAtIndex($whitespaceTokenIndex, 0, ' ');
|
||||
}
|
||||
}
|
||||
|
||||
protected function createConfigurationDefinition(): FixerConfigurationResolverInterface
|
||||
{
|
||||
$tokenMapContainASingleSpaceKeys = array_keys(self::$tokenMapContainASingleSpace);
|
||||
$tokenMapPrecededByASingleSpaceKeys = array_keys(self::$tokenMapPrecededByASingleSpace);
|
||||
$tokenMapFollowedByASingleSpaceKeys = array_keys(self::$tokenMapFollowedByASingleSpace);
|
||||
|
||||
return new FixerConfigurationResolver([
|
||||
(new FixerOptionBuilder('constructs_contain_a_single_space', 'List of constructs which must contain a single space.'))
|
||||
->setAllowedTypes(['array'])
|
||||
->setAllowedValues([new AllowedValueSubset($tokenMapContainASingleSpaceKeys)])
|
||||
->setDefault($tokenMapContainASingleSpaceKeys)
|
||||
->getOption(),
|
||||
(new FixerOptionBuilder('constructs_preceded_by_a_single_space', 'List of constructs which must be preceded by a single space.'))
|
||||
->setAllowedTypes(['array'])
|
||||
->setAllowedValues([new AllowedValueSubset($tokenMapPrecededByASingleSpaceKeys)])
|
||||
->setDefault($tokenMapPrecededByASingleSpaceKeys)
|
||||
->getOption(),
|
||||
(new FixerOptionBuilder('constructs_followed_by_a_single_space', 'List of constructs which must be followed by a single space.'))
|
||||
->setAllowedTypes(['array'])
|
||||
->setAllowedValues([new AllowedValueSubset($tokenMapFollowedByASingleSpaceKeys)])
|
||||
->setDefault($tokenMapFollowedByASingleSpaceKeys)
|
||||
->getOption(),
|
||||
]);
|
||||
}
|
||||
|
||||
private function isMultiLineReturn(Tokens $tokens, int $index): bool
|
||||
{
|
||||
++$index;
|
||||
$tokenFollowingReturn = $tokens[$index];
|
||||
|
||||
if (
|
||||
!$tokenFollowingReturn->isGivenKind(T_WHITESPACE)
|
||||
|| !str_contains($tokenFollowingReturn->getContent(), "\n")
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$nestedCount = 0;
|
||||
|
||||
for ($indexEnd = \count($tokens) - 1, ++$index; $index < $indexEnd; ++$index) {
|
||||
if (str_contains($tokens[$index]->getContent(), "\n")) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if ($tokens[$index]->equals('{')) {
|
||||
++$nestedCount;
|
||||
} elseif ($tokens[$index]->equals('}')) {
|
||||
--$nestedCount;
|
||||
} elseif (0 === $nestedCount && $tokens[$index]->equalsAny([';', [T_CLOSE_TAG]])) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private function isMultilineExtendsOrImplementsWithMoreThanOneAncestor(Tokens $tokens, int $index): bool
|
||||
{
|
||||
$hasMoreThanOneAncestor = false;
|
||||
|
||||
while (++$index) {
|
||||
$token = $tokens[$index];
|
||||
|
||||
if ($token->equals(',')) {
|
||||
$hasMoreThanOneAncestor = true;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($token->equals('{')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($hasMoreThanOneAncestor && str_contains($token->getContent(), "\n")) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private function isMultilineConstant(Tokens $tokens, int $index): bool
|
||||
{
|
||||
$scopeEnd = $tokens->getNextTokenOfKind($index, [';', [T_CLOSE_TAG]]) - 1;
|
||||
$hasMoreThanOneConstant = null !== $tokens->findSequence([new Token(',')], $index + 1, $scopeEnd);
|
||||
|
||||
return $hasMoreThanOneConstant && $tokens->isPartialCodeMultiline($index, $scopeEnd);
|
||||
}
|
||||
}
|
||||
227
vendor/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/BlankLinesBeforeNamespaceFixer.php
vendored
Normal file
227
vendor/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/BlankLinesBeforeNamespaceFixer.php
vendored
Normal file
@ -0,0 +1,227 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* This file is part of PHP CS Fixer.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
|
||||
*
|
||||
* This source file is subject to the MIT license that is bundled
|
||||
* with this source code in the file LICENSE.
|
||||
*/
|
||||
|
||||
namespace PhpCsFixer\Fixer\NamespaceNotation;
|
||||
|
||||
use PhpCsFixer\AbstractFixer;
|
||||
use PhpCsFixer\ConfigurationException\InvalidFixerConfigurationException;
|
||||
use PhpCsFixer\Fixer\ConfigurableFixerInterface;
|
||||
use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface;
|
||||
use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver;
|
||||
use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface;
|
||||
use PhpCsFixer\FixerConfiguration\FixerOptionBuilder;
|
||||
use PhpCsFixer\FixerDefinition\CodeSample;
|
||||
use PhpCsFixer\FixerDefinition\FixerDefinition;
|
||||
use PhpCsFixer\FixerDefinition\FixerDefinitionInterface;
|
||||
use PhpCsFixer\Tokenizer\Token;
|
||||
use PhpCsFixer\Tokenizer\Tokens;
|
||||
use Symfony\Component\OptionsResolver\Options;
|
||||
|
||||
/**
|
||||
* @author Graham Campbell <hello@gjcampbell.co.uk>
|
||||
* @author Greg Korba <greg@codito.dev>
|
||||
*/
|
||||
final class BlankLinesBeforeNamespaceFixer extends AbstractFixer implements WhitespacesAwareFixerInterface, ConfigurableFixerInterface
|
||||
{
|
||||
public function getDefinition(): FixerDefinitionInterface
|
||||
{
|
||||
return new FixerDefinition(
|
||||
'Controls blank lines before a namespace declaration.',
|
||||
[
|
||||
new CodeSample("<?php namespace A {}\n"),
|
||||
new CodeSample("<?php namespace A {}\n", ['min_line_breaks' => 1]),
|
||||
new CodeSample("<?php\n\ndeclare(strict_types=1);\n\n\n\nnamespace A{}\n", ['max_line_breaks' => 2]),
|
||||
new CodeSample("<?php\n\n/** Some comment */\nnamespace A{}\n", ['min_line_breaks' => 2]),
|
||||
new CodeSample("<?php\n\nnamespace A{}\n", ['min_line_breaks' => 0, 'max_line_breaks' => 0]),
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public function isCandidate(Tokens $tokens): bool
|
||||
{
|
||||
return $tokens->isTokenKindFound(T_NAMESPACE);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*
|
||||
* Must run after BlankLineAfterOpeningTagFixer, HeaderCommentFixer.
|
||||
*/
|
||||
public function getPriority(): int
|
||||
{
|
||||
return -31;
|
||||
}
|
||||
|
||||
protected function createConfigurationDefinition(): FixerConfigurationResolverInterface
|
||||
{
|
||||
return new FixerConfigurationResolver([
|
||||
(new FixerOptionBuilder('min_line_breaks', 'Minimum line breaks that should exist before namespace declaration.'))
|
||||
->setAllowedTypes(['int'])
|
||||
->setDefault(2)
|
||||
->setNormalizer(static function (Options $options, $value): int {
|
||||
if ($value < 0) {
|
||||
throw new InvalidFixerConfigurationException(
|
||||
(new self())->getName(),
|
||||
'Option `min_line_breaks` cannot be lower than 0.'
|
||||
);
|
||||
}
|
||||
|
||||
return $value;
|
||||
})
|
||||
->getOption(),
|
||||
(new FixerOptionBuilder('max_line_breaks', 'Maximum line breaks that should exist before namespace declaration.'))
|
||||
->setAllowedTypes(['int'])
|
||||
->setDefault(2)
|
||||
->setNormalizer(static function (Options $options, $value): int {
|
||||
if ($value < 0) {
|
||||
throw new InvalidFixerConfigurationException(
|
||||
(new self())->getName(),
|
||||
'Option `max_line_breaks` cannot be lower than 0.'
|
||||
);
|
||||
}
|
||||
|
||||
if ($value < $options['min_line_breaks']) {
|
||||
throw new InvalidFixerConfigurationException(
|
||||
(new self())->getName(),
|
||||
'Option `max_line_breaks` cannot have lower value than `min_line_breaks`.'
|
||||
);
|
||||
}
|
||||
|
||||
return $value;
|
||||
})
|
||||
->getOption(),
|
||||
]);
|
||||
}
|
||||
|
||||
protected function applyFix(\SplFileInfo $file, Tokens $tokens): void
|
||||
{
|
||||
for ($index = $tokens->count() - 1; $index >= 0; --$index) {
|
||||
$token = $tokens[$index];
|
||||
|
||||
if ($token->isGivenKind(T_NAMESPACE)) {
|
||||
$this->fixLinesBeforeNamespace(
|
||||
$tokens,
|
||||
$index,
|
||||
$this->configuration['min_line_breaks'],
|
||||
$this->configuration['max_line_breaks']
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Make sure # of line breaks prefixing namespace is within given range.
|
||||
*
|
||||
* @param int $expectedMin min. # of line breaks
|
||||
* @param int $expectedMax max. # of line breaks
|
||||
*/
|
||||
protected function fixLinesBeforeNamespace(Tokens $tokens, int $index, int $expectedMin, int $expectedMax): void
|
||||
{
|
||||
// Let's determine the total numbers of new lines before the namespace
|
||||
// and the opening token
|
||||
$openingTokenIndex = null;
|
||||
$precedingNewlines = 0;
|
||||
$newlineInOpening = false;
|
||||
$openingToken = null;
|
||||
|
||||
for ($i = 1; $i <= 2; ++$i) {
|
||||
if (isset($tokens[$index - $i])) {
|
||||
$token = $tokens[$index - $i];
|
||||
|
||||
if ($token->isGivenKind(T_OPEN_TAG)) {
|
||||
$openingToken = $token;
|
||||
$openingTokenIndex = $index - $i;
|
||||
$newlineInOpening = str_contains($token->getContent(), "\n");
|
||||
|
||||
if ($newlineInOpening) {
|
||||
++$precedingNewlines;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (false === $token->isGivenKind(T_WHITESPACE)) {
|
||||
break;
|
||||
}
|
||||
|
||||
$precedingNewlines += substr_count($token->getContent(), "\n");
|
||||
}
|
||||
}
|
||||
|
||||
if ($precedingNewlines >= $expectedMin && $precedingNewlines <= $expectedMax) {
|
||||
return;
|
||||
}
|
||||
|
||||
$previousIndex = $index - 1;
|
||||
$previous = $tokens[$previousIndex];
|
||||
|
||||
if (0 === $expectedMax) {
|
||||
// Remove all the previous new lines
|
||||
if ($previous->isWhitespace()) {
|
||||
$tokens->clearAt($previousIndex);
|
||||
}
|
||||
|
||||
// Remove new lines in opening token
|
||||
if ($newlineInOpening) {
|
||||
$tokens[$openingTokenIndex] = new Token([T_OPEN_TAG, rtrim($openingToken->getContent()).' ']);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$lineEnding = $this->whitespacesConfig->getLineEnding();
|
||||
|
||||
// Allow only as many line breaks as configured:
|
||||
// - keep as-is when current preceding line breaks are within configured range
|
||||
// - use configured max line breaks if currently there is more preceding line breaks
|
||||
// - use configured min line breaks if currently there is less preceding line breaks
|
||||
$newlinesForWhitespaceToken = $precedingNewlines >= $expectedMax
|
||||
? $expectedMax
|
||||
: max($precedingNewlines, $expectedMin);
|
||||
|
||||
if (null !== $openingToken) {
|
||||
// Use the configured line ending for the PHP opening tag
|
||||
$content = rtrim($openingToken->getContent());
|
||||
$newContent = $content.$lineEnding;
|
||||
$tokens[$openingTokenIndex] = new Token([T_OPEN_TAG, $newContent]);
|
||||
--$newlinesForWhitespaceToken;
|
||||
}
|
||||
|
||||
if (0 === $newlinesForWhitespaceToken) {
|
||||
// We have all the needed new lines in the opening tag
|
||||
if ($previous->isWhitespace()) {
|
||||
// Let's remove the previous token containing extra new lines
|
||||
$tokens->clearAt($previousIndex);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if ($previous->isWhitespace()) {
|
||||
// Fix the previous whitespace token
|
||||
$tokens[$previousIndex] = new Token(
|
||||
[
|
||||
T_WHITESPACE,
|
||||
str_repeat($lineEnding, $newlinesForWhitespaceToken).substr(
|
||||
$previous->getContent(),
|
||||
strrpos($previous->getContent(), "\n") + 1
|
||||
),
|
||||
]
|
||||
);
|
||||
} else {
|
||||
// Add a new whitespace token
|
||||
$tokens->insertAt($index, new Token([T_WHITESPACE, str_repeat($lineEnding, $newlinesForWhitespaceToken)]));
|
||||
}
|
||||
}
|
||||
}
|
||||
272
vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocParamOrderFixer.php
vendored
Normal file
272
vendor/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocParamOrderFixer.php
vendored
Normal file
@ -0,0 +1,272 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* This file is part of PHP CS Fixer.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
|
||||
*
|
||||
* This source file is subject to the MIT license that is bundled
|
||||
* with this source code in the file LICENSE.
|
||||
*/
|
||||
|
||||
namespace PhpCsFixer\Fixer\Phpdoc;
|
||||
|
||||
use PhpCsFixer\AbstractFixer;
|
||||
use PhpCsFixer\DocBlock\Annotation;
|
||||
use PhpCsFixer\DocBlock\DocBlock;
|
||||
use PhpCsFixer\DocBlock\TypeExpression;
|
||||
use PhpCsFixer\FixerDefinition\CodeSample;
|
||||
use PhpCsFixer\FixerDefinition\FixerDefinition;
|
||||
use PhpCsFixer\FixerDefinition\FixerDefinitionInterface;
|
||||
use PhpCsFixer\Preg;
|
||||
use PhpCsFixer\Tokenizer\Token;
|
||||
use PhpCsFixer\Tokenizer\Tokens;
|
||||
|
||||
/**
|
||||
* @author Jonathan Gruber <gruberjonathan@gmail.com>
|
||||
*/
|
||||
final class PhpdocParamOrderFixer extends AbstractFixer
|
||||
{
|
||||
private const PARAM_TAG = 'param';
|
||||
|
||||
public function isCandidate(Tokens $tokens): bool
|
||||
{
|
||||
return $tokens->isTokenKindFound(T_DOC_COMMENT);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*
|
||||
* Must run before PhpdocAlignFixer.
|
||||
* Must run after AlignMultilineCommentFixer, CommentToPhpdocFixer, PhpdocIndentFixer, PhpdocScalarFixer, PhpdocToCommentFixer, PhpdocTypesFixer.
|
||||
*/
|
||||
public function getPriority(): int
|
||||
{
|
||||
return parent::getPriority();
|
||||
}
|
||||
|
||||
public function getDefinition(): FixerDefinitionInterface
|
||||
{
|
||||
return new FixerDefinition(
|
||||
'Orders all `@param` annotations in DocBlocks according to method signature.',
|
||||
[
|
||||
new CodeSample(
|
||||
'<?php
|
||||
/**
|
||||
* Annotations in wrong order
|
||||
*
|
||||
* @param int $a
|
||||
* @param Foo $c
|
||||
* @param array $b
|
||||
*/
|
||||
function m($a, array $b, Foo $c) {}
|
||||
'
|
||||
),
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
protected function applyFix(\SplFileInfo $file, Tokens $tokens): void
|
||||
{
|
||||
foreach ($tokens as $index => $token) {
|
||||
if (!$token->isGivenKind(T_DOC_COMMENT)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Check for function / closure token
|
||||
$nextFunctionToken = $tokens->getNextTokenOfKind($index, [[T_FUNCTION], [T_FN]]);
|
||||
if (null === $nextFunctionToken) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Find start index of param block (opening parenthesis)
|
||||
$paramBlockStart = $tokens->getNextTokenOfKind($index, ['(']);
|
||||
if (null === $paramBlockStart) {
|
||||
return;
|
||||
}
|
||||
|
||||
$doc = new DocBlock($tokens[$index]->getContent());
|
||||
$paramAnnotations = $doc->getAnnotationsOfType(self::PARAM_TAG);
|
||||
|
||||
if ([] === $paramAnnotations) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$paramNames = $this->getFunctionParamNames($tokens, $paramBlockStart);
|
||||
$doc = $this->rewriteDocBlock($doc, $paramNames, $paramAnnotations);
|
||||
|
||||
$tokens[$index] = new Token([T_DOC_COMMENT, $doc->getContent()]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Token[]
|
||||
*/
|
||||
private function getFunctionParamNames(Tokens $tokens, int $paramBlockStart): array
|
||||
{
|
||||
$paramBlockEnd = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS_BRACE, $paramBlockStart);
|
||||
|
||||
$paramNames = [];
|
||||
for (
|
||||
$i = $tokens->getNextTokenOfKind($paramBlockStart, [[T_VARIABLE]]);
|
||||
null !== $i && $i < $paramBlockEnd;
|
||||
$i = $tokens->getNextTokenOfKind($i, [[T_VARIABLE]])
|
||||
) {
|
||||
$paramNames[] = $tokens[$i];
|
||||
}
|
||||
|
||||
return $paramNames;
|
||||
}
|
||||
|
||||
/**
|
||||
* Overwrite the param annotations in order.
|
||||
*
|
||||
* @param Token[] $paramNames
|
||||
* @param Annotation[] $paramAnnotations
|
||||
*/
|
||||
private function rewriteDocBlock(DocBlock $doc, array $paramNames, array $paramAnnotations): DocBlock
|
||||
{
|
||||
$orderedAnnotations = $this->sortParamAnnotations($paramNames, $paramAnnotations);
|
||||
$otherAnnotations = $this->getOtherAnnotationsBetweenParams($doc, $paramAnnotations);
|
||||
|
||||
// Append annotations found between param ones
|
||||
if ([] !== $otherAnnotations) {
|
||||
array_push($orderedAnnotations, ...$otherAnnotations);
|
||||
}
|
||||
|
||||
// Overwrite all annotations between first and last @param tag in order
|
||||
$paramsStart = reset($paramAnnotations)->getStart();
|
||||
$paramsEnd = end($paramAnnotations)->getEnd();
|
||||
|
||||
foreach ($doc->getAnnotations() as $annotation) {
|
||||
if ($annotation->getStart() < $paramsStart || $annotation->getEnd() > $paramsEnd) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$annotation->remove();
|
||||
$doc
|
||||
->getLine($annotation->getStart())
|
||||
->setContent(current($orderedAnnotations))
|
||||
;
|
||||
|
||||
next($orderedAnnotations);
|
||||
}
|
||||
|
||||
return $doc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sort the param annotations according to the function parameters.
|
||||
*
|
||||
* @param Token[] $funcParamNames
|
||||
* @param Annotation[] $paramAnnotations
|
||||
*
|
||||
* @return string[]
|
||||
*/
|
||||
private function sortParamAnnotations(array $funcParamNames, array $paramAnnotations): array
|
||||
{
|
||||
$validParams = [];
|
||||
foreach ($funcParamNames as $paramName) {
|
||||
$indices = $this->findParamAnnotationByIdentifier($paramAnnotations, $paramName->getContent());
|
||||
|
||||
// Found an exactly matching @param annotation
|
||||
if (\is_array($indices)) {
|
||||
foreach ($indices as $index) {
|
||||
$validParams[$index] = $paramAnnotations[$index]->getContent();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Detect superfluous annotations
|
||||
/** @var Annotation[] $invalidParams */
|
||||
$invalidParams = array_diff_key($paramAnnotations, $validParams);
|
||||
$invalidParams = array_values($invalidParams);
|
||||
|
||||
// Append invalid parameters to the (ordered) valid ones
|
||||
$orderedParams = array_values($validParams);
|
||||
foreach ($invalidParams as $params) {
|
||||
$orderedParams[] = $params->getContent();
|
||||
}
|
||||
|
||||
return $orderedParams;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch all annotations except the param ones.
|
||||
*
|
||||
* @param Annotation[] $paramAnnotations
|
||||
*
|
||||
* @return string[]
|
||||
*/
|
||||
private function getOtherAnnotationsBetweenParams(DocBlock $doc, array $paramAnnotations): array
|
||||
{
|
||||
if (0 === \count($paramAnnotations)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$paramsStart = reset($paramAnnotations)->getStart();
|
||||
$paramsEnd = end($paramAnnotations)->getEnd();
|
||||
|
||||
$otherAnnotations = [];
|
||||
foreach ($doc->getAnnotations() as $annotation) {
|
||||
if ($annotation->getStart() < $paramsStart || $annotation->getEnd() > $paramsEnd) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (self::PARAM_TAG !== $annotation->getTag()->getName()) {
|
||||
$otherAnnotations[] = $annotation->getContent();
|
||||
}
|
||||
}
|
||||
|
||||
return $otherAnnotations;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the indices of the lines of a specific parameter annotation.
|
||||
*
|
||||
* @param Annotation[] $paramAnnotations
|
||||
*
|
||||
* @return null|array<int>
|
||||
*/
|
||||
private function findParamAnnotationByIdentifier(array $paramAnnotations, string $identifier): ?array
|
||||
{
|
||||
$blockLevel = 0;
|
||||
$blockMatch = false;
|
||||
$blockIndices = [];
|
||||
|
||||
$paramRegex = '/\*\s*@param\s*(?:|'.TypeExpression::REGEX_TYPES.'\s*)&?(?=\$\b)'.preg_quote($identifier).'\b/';
|
||||
|
||||
foreach ($paramAnnotations as $i => $param) {
|
||||
$blockStart = Preg::match('/\s*{\s*/', $param->getContent());
|
||||
$blockEndMatches = Preg::matchAll('/}[\*\s\n]*/', $param->getContent());
|
||||
|
||||
if (0 === $blockLevel && Preg::match($paramRegex, $param->getContent())) {
|
||||
if ($blockStart) {
|
||||
$blockMatch = true; // Start of a nested block
|
||||
} else {
|
||||
return [$i]; // Top level match
|
||||
}
|
||||
}
|
||||
|
||||
if ($blockStart) {
|
||||
++$blockLevel;
|
||||
}
|
||||
|
||||
if (0 !== $blockEndMatches) {
|
||||
$blockLevel -= $blockEndMatches;
|
||||
}
|
||||
|
||||
if ($blockMatch) {
|
||||
$blockIndices[] = $i;
|
||||
if (0 === $blockLevel) {
|
||||
return $blockIndices;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
208
vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/SpacesInsideParenthesesFixer.php
vendored
Normal file
208
vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/SpacesInsideParenthesesFixer.php
vendored
Normal file
@ -0,0 +1,208 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* This file is part of PHP CS Fixer.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
|
||||
*
|
||||
* This source file is subject to the MIT license that is bundled
|
||||
* with this source code in the file LICENSE.
|
||||
*/
|
||||
|
||||
namespace PhpCsFixer\Fixer\Whitespace;
|
||||
|
||||
use PhpCsFixer\AbstractFixer;
|
||||
use PhpCsFixer\Fixer\ConfigurableFixerInterface;
|
||||
use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver;
|
||||
use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface;
|
||||
use PhpCsFixer\FixerConfiguration\FixerOptionBuilder;
|
||||
use PhpCsFixer\FixerDefinition\CodeSample;
|
||||
use PhpCsFixer\FixerDefinition\FixerDefinition;
|
||||
use PhpCsFixer\FixerDefinition\FixerDefinitionInterface;
|
||||
use PhpCsFixer\Tokenizer\CT;
|
||||
use PhpCsFixer\Tokenizer\Token;
|
||||
use PhpCsFixer\Tokenizer\Tokens;
|
||||
|
||||
/**
|
||||
* Fixer for rules defined in PSR2 ¶4.3, ¶4.6, ¶5.
|
||||
*
|
||||
* @author Marc Aubé
|
||||
* @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
|
||||
*/
|
||||
final class SpacesInsideParenthesesFixer extends AbstractFixer implements ConfigurableFixerInterface
|
||||
{
|
||||
public function getDefinition(): FixerDefinitionInterface
|
||||
{
|
||||
return new FixerDefinition(
|
||||
'Parentheses must be declared using the configured whitespace.',
|
||||
[
|
||||
new CodeSample("<?php\nif ( \$a ) {\n foo( );\n}\n"),
|
||||
new CodeSample(
|
||||
"<?php
|
||||
function foo( \$bar, \$baz )
|
||||
{
|
||||
}\n",
|
||||
['space' => 'none']
|
||||
),
|
||||
new CodeSample(
|
||||
"<?php\nif (\$a) {\n foo( );\n}\n",
|
||||
['space' => 'single']
|
||||
),
|
||||
new CodeSample(
|
||||
"<?php
|
||||
function foo(\$bar, \$baz)
|
||||
{
|
||||
}\n",
|
||||
['space' => 'single']
|
||||
),
|
||||
],
|
||||
'By default there are not any additional spaces inside parentheses, however with `space=single` configuration option whitespace inside parentheses will be unified to single space.'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*
|
||||
* Must run before FunctionToConstantFixer, GetClassToClassKeywordFixer, StringLengthToEmptyFixer.
|
||||
* Must run after CombineConsecutiveIssetsFixer, CombineNestedDirnameFixer, IncrementStyleFixer, LambdaNotUsedImportFixer, ModernizeStrposFixer, NoUselessSprintfFixer, PowToExponentiationFixer.
|
||||
*/
|
||||
public function getPriority(): int
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
|
||||
public function isCandidate(Tokens $tokens): bool
|
||||
{
|
||||
return $tokens->isTokenKindFound('(');
|
||||
}
|
||||
|
||||
protected function applyFix(\SplFileInfo $file, Tokens $tokens): void
|
||||
{
|
||||
if ('none' === $this->configuration['space']) {
|
||||
foreach ($tokens as $index => $token) {
|
||||
if (!$token->equals('(')) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$prevIndex = $tokens->getPrevMeaningfulToken($index);
|
||||
|
||||
// ignore parenthesis for T_ARRAY
|
||||
if (null !== $prevIndex && $tokens[$prevIndex]->isGivenKind(T_ARRAY)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$endIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS_BRACE, $index);
|
||||
|
||||
// remove space after opening `(`
|
||||
if (!$tokens[$tokens->getNextNonWhitespace($index)]->isComment()) {
|
||||
$this->removeSpaceAroundToken($tokens, $index + 1);
|
||||
}
|
||||
|
||||
// remove space before closing `)` if it is not `list($a, $b, )` case
|
||||
if (!$tokens[$tokens->getPrevMeaningfulToken($endIndex)]->equals(',')) {
|
||||
$this->removeSpaceAroundToken($tokens, $endIndex - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ('single' === $this->configuration['space']) {
|
||||
foreach ($tokens as $index => $token) {
|
||||
if (!$token->equals('(')) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$endParenthesisIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS_BRACE, $index);
|
||||
|
||||
// if not other content than spaces in block remove spaces
|
||||
$blockContent = $this->getBlockContent($index, $endParenthesisIndex, $tokens);
|
||||
if (1 === \count($blockContent) && \in_array(' ', $blockContent, true)) {
|
||||
$this->removeSpaceAroundToken($tokens, $index + 1);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
// don't process if the next token is `)`
|
||||
$nextMeaningfulTokenIndex = $tokens->getNextMeaningfulToken($index);
|
||||
if (')' === $tokens[$nextMeaningfulTokenIndex]->getContent()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$afterParenthesisIndex = $tokens->getNextNonWhitespace($endParenthesisIndex);
|
||||
$afterParenthesisToken = $tokens[$afterParenthesisIndex];
|
||||
|
||||
if ($afterParenthesisToken->isGivenKind(CT::T_USE_LAMBDA)) {
|
||||
$useStartParenthesisIndex = $tokens->getNextTokenOfKind($afterParenthesisIndex, ['(']);
|
||||
$useEndParenthesisIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS_BRACE, $useStartParenthesisIndex);
|
||||
|
||||
// add single-line edge whitespaces inside use parentheses
|
||||
$this->fixParenthesisInnerEdge($tokens, $useStartParenthesisIndex, $useEndParenthesisIndex);
|
||||
}
|
||||
|
||||
// add single-line edge whitespaces inside parameters list parentheses
|
||||
$this->fixParenthesisInnerEdge($tokens, $index, $endParenthesisIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected function createConfigurationDefinition(): FixerConfigurationResolverInterface
|
||||
{
|
||||
return new FixerConfigurationResolver([
|
||||
(new FixerOptionBuilder('space', 'Whether to have `single` or `none` space inside parentheses.'))
|
||||
->setAllowedValues(['none', 'single'])
|
||||
->setDefault('none')
|
||||
->getOption(),
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove spaces from token at a given index.
|
||||
*/
|
||||
private function removeSpaceAroundToken(Tokens $tokens, int $index): void
|
||||
{
|
||||
$token = $tokens[$index];
|
||||
|
||||
if ($token->isWhitespace() && !str_contains($token->getContent(), "\n")) {
|
||||
$tokens->clearAt($index);
|
||||
}
|
||||
}
|
||||
|
||||
private function fixParenthesisInnerEdge(Tokens $tokens, int $start, int $end): void
|
||||
{
|
||||
// fix white space before ')'
|
||||
if ($tokens[$end - 1]->isWhitespace()) {
|
||||
$content = $tokens[$end - 1]->getContent();
|
||||
if (' ' !== $content && !str_contains($content, "\n") && !$tokens[$tokens->getPrevNonWhitespace($end - 1)]->isComment()) {
|
||||
$tokens[$end - 1] = new Token([T_WHITESPACE, ' ']);
|
||||
}
|
||||
} else {
|
||||
$tokens->insertAt($end, new Token([T_WHITESPACE, ' ']));
|
||||
}
|
||||
|
||||
// fix white space after '('
|
||||
if ($tokens[$start + 1]->isWhitespace()) {
|
||||
$content = $tokens[$start + 1]->getContent();
|
||||
if (' ' !== $content && !str_contains($content, "\n") && !$tokens[$tokens->getNextNonWhitespace($start + 1)]->isComment()) {
|
||||
$tokens[$start + 1] = new Token([T_WHITESPACE, ' ']);
|
||||
}
|
||||
} else {
|
||||
$tokens->insertAt($start + 1, new Token([T_WHITESPACE, ' ']));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return list<string>
|
||||
*/
|
||||
private function getBlockContent(int $startIndex, int $endIndex, Tokens $tokens): array
|
||||
{
|
||||
// + 1 for (
|
||||
$contents = [];
|
||||
for ($i = ($startIndex + 1); $i < $endIndex; ++$i) {
|
||||
$contents[] = $tokens[$i]->getContent();
|
||||
}
|
||||
|
||||
return $contents;
|
||||
}
|
||||
}
|
||||
199
vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/TypeDeclarationSpacesFixer.php
vendored
Normal file
199
vendor/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/TypeDeclarationSpacesFixer.php
vendored
Normal file
@ -0,0 +1,199 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* This file is part of PHP CS Fixer.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
|
||||
*
|
||||
* This source file is subject to the MIT license that is bundled
|
||||
* with this source code in the file LICENSE.
|
||||
*/
|
||||
|
||||
namespace PhpCsFixer\Fixer\Whitespace;
|
||||
|
||||
use PhpCsFixer\AbstractFixer;
|
||||
use PhpCsFixer\Fixer\ConfigurableFixerInterface;
|
||||
use PhpCsFixer\FixerConfiguration\AllowedValueSubset;
|
||||
use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver;
|
||||
use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface;
|
||||
use PhpCsFixer\FixerConfiguration\FixerOptionBuilder;
|
||||
use PhpCsFixer\FixerDefinition\CodeSample;
|
||||
use PhpCsFixer\FixerDefinition\FixerDefinition;
|
||||
use PhpCsFixer\FixerDefinition\FixerDefinitionInterface;
|
||||
use PhpCsFixer\Tokenizer\Analyzer\Analysis\TypeAnalysis;
|
||||
use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer;
|
||||
use PhpCsFixer\Tokenizer\Token;
|
||||
use PhpCsFixer\Tokenizer\Tokens;
|
||||
use PhpCsFixer\Tokenizer\TokensAnalyzer;
|
||||
|
||||
/**
|
||||
* @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
|
||||
* @author John Paul E. Balandan, CPA <paulbalandan@gmail.com>
|
||||
*/
|
||||
final class TypeDeclarationSpacesFixer extends AbstractFixer implements ConfigurableFixerInterface
|
||||
{
|
||||
public function getDefinition(): FixerDefinitionInterface
|
||||
{
|
||||
return new FixerDefinition(
|
||||
'Ensure single space between a variable and its type declaration in function arguments and properties.',
|
||||
[
|
||||
new CodeSample(
|
||||
'<?php
|
||||
class Bar
|
||||
{
|
||||
private string $a;
|
||||
private bool $b;
|
||||
|
||||
public function __invoke(array $c) {}
|
||||
}
|
||||
'
|
||||
),
|
||||
new CodeSample(
|
||||
'<?php
|
||||
class Foo
|
||||
{
|
||||
public int $bar;
|
||||
|
||||
public function baz(string $a)
|
||||
{
|
||||
return fn(bool $c): string => (string) $c;
|
||||
}
|
||||
}
|
||||
',
|
||||
['elements' => ['function']]
|
||||
),
|
||||
new CodeSample(
|
||||
'<?php
|
||||
class Foo
|
||||
{
|
||||
public int $bar;
|
||||
|
||||
public function baz(string $a) {}
|
||||
}
|
||||
',
|
||||
['elements' => ['property']]
|
||||
),
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public function isCandidate(Tokens $tokens): bool
|
||||
{
|
||||
return $tokens->isAnyTokenKindsFound([...Token::getClassyTokenKinds(), T_FN, T_FUNCTION]);
|
||||
}
|
||||
|
||||
protected function createConfigurationDefinition(): FixerConfigurationResolverInterface
|
||||
{
|
||||
return new FixerConfigurationResolver([
|
||||
(new FixerOptionBuilder('elements', 'Structural elements where the spacing after the type declaration should be fixed.'))
|
||||
->setAllowedTypes(['array'])
|
||||
->setAllowedValues([new AllowedValueSubset(['function', 'property'])])
|
||||
->setDefault(['function', 'property'])
|
||||
->getOption(),
|
||||
]);
|
||||
}
|
||||
|
||||
protected function applyFix(\SplFileInfo $file, Tokens $tokens): void
|
||||
{
|
||||
$functionsAnalyzer = new FunctionsAnalyzer();
|
||||
|
||||
foreach (array_reverse($this->getElements($tokens), true) as $index => $type) {
|
||||
if ('property' === $type && \in_array('property', $this->configuration['elements'], true)) {
|
||||
$this->ensureSingleSpaceAtPropertyTypehint($tokens, $index);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if ('method' === $type && \in_array('function', $this->configuration['elements'], true)) {
|
||||
$this->ensureSingleSpaceAtFunctionArgumentTypehint($functionsAnalyzer, $tokens, $index);
|
||||
|
||||
// implicit continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<int, string>
|
||||
*
|
||||
* @phpstan-return array<int, 'method'|'property'>
|
||||
*/
|
||||
private function getElements(Tokens $tokens): array
|
||||
{
|
||||
$tokensAnalyzer = new TokensAnalyzer($tokens);
|
||||
|
||||
$elements = array_map(
|
||||
static fn (array $element): string => $element['type'],
|
||||
array_filter(
|
||||
$tokensAnalyzer->getClassyElements(),
|
||||
static fn (array $element): bool => \in_array($element['type'], ['method', 'property'], true)
|
||||
)
|
||||
);
|
||||
|
||||
foreach ($tokens as $index => $token) {
|
||||
if (
|
||||
$token->isGivenKind(T_FN)
|
||||
|| ($token->isGivenKind(T_FUNCTION) && !isset($elements[$index]))
|
||||
) {
|
||||
$elements[$index] = 'method';
|
||||
}
|
||||
}
|
||||
|
||||
return $elements;
|
||||
}
|
||||
|
||||
private function ensureSingleSpaceAtFunctionArgumentTypehint(FunctionsAnalyzer $functionsAnalyzer, Tokens $tokens, int $index): void
|
||||
{
|
||||
foreach (array_reverse($functionsAnalyzer->getFunctionArguments($tokens, $index)) as $argumentInfo) {
|
||||
$argumentType = $argumentInfo->getTypeAnalysis();
|
||||
|
||||
if (null === $argumentType) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$tokens->ensureWhitespaceAtIndex($argumentType->getEndIndex() + 1, 0, ' ');
|
||||
}
|
||||
}
|
||||
|
||||
private function ensureSingleSpaceAtPropertyTypehint(Tokens $tokens, int $index): void
|
||||
{
|
||||
$propertyIndex = $index;
|
||||
$propertyModifiers = [T_PRIVATE, T_PROTECTED, T_PUBLIC, T_STATIC, T_VAR];
|
||||
|
||||
if (\defined('T_READONLY')) {
|
||||
$propertyModifiers[] = T_READONLY; // @TODO drop condition when PHP 8.1 is supported
|
||||
}
|
||||
|
||||
do {
|
||||
$index = $tokens->getPrevMeaningfulToken($index);
|
||||
} while (!$tokens[$index]->isGivenKind($propertyModifiers));
|
||||
|
||||
$propertyType = $this->collectTypeAnalysis($tokens, $index, $propertyIndex);
|
||||
|
||||
if (null === $propertyType) {
|
||||
return;
|
||||
}
|
||||
|
||||
$tokens->ensureWhitespaceAtIndex($propertyType->getEndIndex() + 1, 0, ' ');
|
||||
}
|
||||
|
||||
private function collectTypeAnalysis(Tokens $tokens, int $startIndex, int $endIndex): ?TypeAnalysis
|
||||
{
|
||||
$type = '';
|
||||
$typeStartIndex = $tokens->getNextMeaningfulToken($startIndex);
|
||||
$typeEndIndex = $typeStartIndex;
|
||||
|
||||
for ($i = $typeStartIndex; $i < $endIndex; ++$i) {
|
||||
if ($tokens[$i]->isWhitespace() || $tokens[$i]->isComment()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$type .= $tokens[$i]->getContent();
|
||||
$typeEndIndex = $i;
|
||||
}
|
||||
|
||||
return '' !== $type ? new TypeAnalysis($type, $typeStartIndex, $typeEndIndex) : null;
|
||||
}
|
||||
}
|
||||
44
vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS1x0RiskySet.php
vendored
Normal file
44
vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS1x0RiskySet.php
vendored
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* This file is part of PHP CS Fixer.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
|
||||
*
|
||||
* This source file is subject to the MIT license that is bundled
|
||||
* with this source code in the file LICENSE.
|
||||
*/
|
||||
|
||||
namespace PhpCsFixer\RuleSet\Sets;
|
||||
|
||||
use PhpCsFixer\RuleSet\AbstractRuleSetDescription;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*
|
||||
* PER Coding Style v1.0.
|
||||
*
|
||||
* @see https://github.com/php-fig/per-coding-style/blob/1.0.0/spec.md
|
||||
*/
|
||||
final class PERCS1x0RiskySet extends AbstractRuleSetDescription
|
||||
{
|
||||
public function getName(): string
|
||||
{
|
||||
return '@PER-CS1.0:risky';
|
||||
}
|
||||
|
||||
public function getRules(): array
|
||||
{
|
||||
return [
|
||||
'@PSR12:risky' => true,
|
||||
];
|
||||
}
|
||||
|
||||
public function getDescription(): string
|
||||
{
|
||||
return 'Rules that follow `PER Coding Style 1.0 <https://www.php-fig.org/per/coding-style/>`_.';
|
||||
}
|
||||
}
|
||||
44
vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS1x0Set.php
vendored
Normal file
44
vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS1x0Set.php
vendored
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* This file is part of PHP CS Fixer.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
|
||||
*
|
||||
* This source file is subject to the MIT license that is bundled
|
||||
* with this source code in the file LICENSE.
|
||||
*/
|
||||
|
||||
namespace PhpCsFixer\RuleSet\Sets;
|
||||
|
||||
use PhpCsFixer\RuleSet\AbstractRuleSetDescription;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*
|
||||
* PER Coding Style v1.0.
|
||||
*
|
||||
* @see https://github.com/php-fig/per-coding-style/blob/1.0.0/spec.md
|
||||
*/
|
||||
final class PERCS1x0Set extends AbstractRuleSetDescription
|
||||
{
|
||||
public function getName(): string
|
||||
{
|
||||
return '@PER-CS1.0';
|
||||
}
|
||||
|
||||
public function getRules(): array
|
||||
{
|
||||
return [
|
||||
'@PSR12' => true,
|
||||
];
|
||||
}
|
||||
|
||||
public function getDescription(): string
|
||||
{
|
||||
return 'Rules that follow `PER Coding Style 1.0 <https://www.php-fig.org/per/coding-style/>`_.';
|
||||
}
|
||||
}
|
||||
31
vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit100MigrationRiskySet.php
vendored
Normal file
31
vendor/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit100MigrationRiskySet.php
vendored
Normal file
@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* This file is part of PHP CS Fixer.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
|
||||
*
|
||||
* This source file is subject to the MIT license that is bundled
|
||||
* with this source code in the file LICENSE.
|
||||
*/
|
||||
|
||||
namespace PhpCsFixer\RuleSet\Sets;
|
||||
|
||||
use PhpCsFixer\RuleSet\AbstractMigrationSetDescription;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
final class PHPUnit100MigrationRiskySet extends AbstractMigrationSetDescription
|
||||
{
|
||||
public function getRules(): array
|
||||
{
|
||||
return [
|
||||
'@PHPUnit84Migration:risky' => true,
|
||||
'php_unit_data_provider_static' => ['force' => true],
|
||||
];
|
||||
}
|
||||
}
|
||||
53
vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/DataProviderAnalysis.php
vendored
Normal file
53
vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/DataProviderAnalysis.php
vendored
Normal file
@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* This file is part of PHP CS Fixer.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
|
||||
*
|
||||
* This source file is subject to the MIT license that is bundled
|
||||
* with this source code in the file LICENSE.
|
||||
*/
|
||||
|
||||
namespace PhpCsFixer\Tokenizer\Analyzer\Analysis;
|
||||
|
||||
final class DataProviderAnalysis
|
||||
{
|
||||
private string $name;
|
||||
|
||||
private int $nameIndex;
|
||||
|
||||
/** @var array<int> */
|
||||
private array $usageIndices;
|
||||
|
||||
/**
|
||||
* @param array<int> $usageIndices
|
||||
*/
|
||||
public function __construct(string $name, int $nameIndex, array $usageIndices)
|
||||
{
|
||||
$this->name = $name;
|
||||
$this->nameIndex = $nameIndex;
|
||||
$this->usageIndices = $usageIndices;
|
||||
}
|
||||
|
||||
public function getName(): string
|
||||
{
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
public function getNameIndex(): int
|
||||
{
|
||||
return $this->nameIndex;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<int>
|
||||
*/
|
||||
public function getUsageIndices(): array
|
||||
{
|
||||
return $this->usageIndices;
|
||||
}
|
||||
}
|
||||
101
vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/DataProviderAnalyzer.php
vendored
Normal file
101
vendor/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/DataProviderAnalyzer.php
vendored
Normal file
@ -0,0 +1,101 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* This file is part of PHP CS Fixer.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
|
||||
*
|
||||
* This source file is subject to the MIT license that is bundled
|
||||
* with this source code in the file LICENSE.
|
||||
*/
|
||||
|
||||
namespace PhpCsFixer\Tokenizer\Analyzer;
|
||||
|
||||
use PhpCsFixer\DocBlock\TypeExpression;
|
||||
use PhpCsFixer\Preg;
|
||||
use PhpCsFixer\Tokenizer\Analyzer\Analysis\DataProviderAnalysis;
|
||||
use PhpCsFixer\Tokenizer\Tokens;
|
||||
|
||||
/**
|
||||
* @author Kuba Werłos <werlos@gmail.com>
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
final class DataProviderAnalyzer
|
||||
{
|
||||
private const REGEX_CLASS = '(?:\\\\?+'.TypeExpression::REGEX_IDENTIFIER
|
||||
.'(\\\\'.TypeExpression::REGEX_IDENTIFIER.')*+)';
|
||||
|
||||
/**
|
||||
* @return array<DataProviderAnalysis>
|
||||
*/
|
||||
public function getDataProviders(Tokens $tokens, int $startIndex, int $endIndex): array
|
||||
{
|
||||
$methods = $this->getMethods($tokens, $startIndex, $endIndex);
|
||||
|
||||
$dataProviders = [];
|
||||
foreach ($methods as $methodIndex) {
|
||||
$docCommentIndex = $tokens->getTokenNotOfKindSibling(
|
||||
$methodIndex,
|
||||
-1,
|
||||
[[T_ABSTRACT], [T_COMMENT], [T_FINAL], [T_FUNCTION], [T_PRIVATE], [T_PROTECTED], [T_PUBLIC], [T_STATIC], [T_WHITESPACE]]
|
||||
);
|
||||
|
||||
if (!$tokens[$docCommentIndex]->isGivenKind(T_DOC_COMMENT)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
Preg::matchAll('/@dataProvider\h+(('.self::REGEX_CLASS.'::)?'.TypeExpression::REGEX_IDENTIFIER.')/', $tokens[$docCommentIndex]->getContent(), $matches);
|
||||
|
||||
/** @var array<string> $matches */
|
||||
$matches = $matches[1];
|
||||
|
||||
foreach ($matches as $dataProviderName) {
|
||||
$dataProviders[$dataProviderName][] = $docCommentIndex;
|
||||
}
|
||||
}
|
||||
|
||||
$dataProviderAnalyses = [];
|
||||
foreach ($dataProviders as $dataProviderName => $dataProviderUsages) {
|
||||
$lowercaseDataProviderName = strtolower($dataProviderName);
|
||||
if (!\array_key_exists($lowercaseDataProviderName, $methods)) {
|
||||
continue;
|
||||
}
|
||||
$dataProviderAnalyses[$methods[$lowercaseDataProviderName]] = new DataProviderAnalysis(
|
||||
$tokens[$methods[$lowercaseDataProviderName]]->getContent(),
|
||||
$methods[$lowercaseDataProviderName],
|
||||
$dataProviderUsages,
|
||||
);
|
||||
}
|
||||
|
||||
ksort($dataProviderAnalyses);
|
||||
|
||||
return array_values($dataProviderAnalyses);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<string, int>
|
||||
*/
|
||||
private function getMethods(Tokens $tokens, int $startIndex, int $endIndex): array
|
||||
{
|
||||
$functions = [];
|
||||
for ($index = $startIndex; $index < $endIndex; ++$index) {
|
||||
if (!$tokens[$index]->isGivenKind(T_FUNCTION)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$functionNameIndex = $tokens->getNextNonWhitespace($index);
|
||||
|
||||
if (!$tokens[$functionNameIndex]->isGivenKind(T_STRING)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$functions[strtolower($tokens[$functionNameIndex]->getContent())] = $functionNameIndex;
|
||||
}
|
||||
|
||||
return $functions;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,65 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* This file is part of PHP CS Fixer.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
|
||||
*
|
||||
* This source file is subject to the MIT license that is bundled
|
||||
* with this source code in the file LICENSE.
|
||||
*/
|
||||
|
||||
namespace PhpCsFixer\Tokenizer\Transformer;
|
||||
|
||||
use PhpCsFixer\Tokenizer\AbstractTransformer;
|
||||
use PhpCsFixer\Tokenizer\CT;
|
||||
use PhpCsFixer\Tokenizer\Token;
|
||||
use PhpCsFixer\Tokenizer\Tokens;
|
||||
|
||||
/**
|
||||
* Transform DNF parentheses into CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_OPEN and CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_CLOSE.
|
||||
*
|
||||
* @see https://wiki.php.net/rfc/dnf_types
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
final class DisjunctiveNormalFormTypeParenthesisTransformer extends AbstractTransformer
|
||||
{
|
||||
public function getPriority(): int
|
||||
{
|
||||
// needs to run after TypeAlternationTransformer
|
||||
return -16;
|
||||
}
|
||||
|
||||
public function getRequiredPhpVersionId(): int
|
||||
{
|
||||
return 8_02_00;
|
||||
}
|
||||
|
||||
public function process(Tokens $tokens, Token $token, int $index): void
|
||||
{
|
||||
if ($token->equals('(') && $tokens[$tokens->getPrevMeaningfulToken($index)]->isGivenKind(CT::T_TYPE_ALTERNATION)) {
|
||||
$openIndex = $index;
|
||||
$closeIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS_BRACE, $index);
|
||||
} elseif ($token->equals(')') && $tokens[$tokens->getNextMeaningfulToken($index)]->isGivenKind(CT::T_TYPE_ALTERNATION)) {
|
||||
$openIndex = $tokens->findBlockStart(Tokens::BLOCK_TYPE_PARENTHESIS_BRACE, $index);
|
||||
$closeIndex = $index;
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
||||
$tokens[$openIndex] = new Token([CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_OPEN, '(']);
|
||||
$tokens[$closeIndex] = new Token([CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_CLOSE, ')']);
|
||||
}
|
||||
|
||||
public function getCustomTokens(): array
|
||||
{
|
||||
return [
|
||||
CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_OPEN,
|
||||
CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_CLOSE,
|
||||
];
|
||||
}
|
||||
}
|
||||
53
vendor/mpdf/mpdf/.github/CONTRIBUTING.md
vendored
Normal file
53
vendor/mpdf/mpdf/.github/CONTRIBUTING.md
vendored
Normal file
@ -0,0 +1,53 @@
|
||||
Contributing
|
||||
============
|
||||
|
||||
Issue tracker
|
||||
-------------
|
||||
|
||||
The Issue tracker serves mainly as a place to report bugs and request new features.
|
||||
Please do not abuse it as a general questions or troubleshooting location.
|
||||
|
||||
General troubleshooting
|
||||
-------------
|
||||
|
||||
For these questions please use [Discussions](https://github.com/mpdf/mpdf/discussions). Add your enquiry
|
||||
to appropriate category and as always, include a reproducible code example when applicable (see code example guidelines below).
|
||||
|
||||
You can also use the [mpdf tag](https://stackoverflow.com/questions/tagged/mpdf)
|
||||
at [Stack Overflow](https://stackoverflow.com/)
|
||||
as the StackOverflow user base is more likely to answer you in a timely manner.
|
||||
When doing so, make sure you comply to StackOverflow question guidelines.
|
||||
|
||||
Bug reports
|
||||
-------------
|
||||
|
||||
* Bug reports **MUST** contain a small example in php/html that reproduces the bug.
|
||||
* The code example **MUST** be reproducible by copy&paste assuming composer dependencies are installed. That means:
|
||||
* No calling unrelated funcions,
|
||||
* an actual final HTML code has to be present, pasting a template file is not enough,
|
||||
* if the bug considers import or fonts, example source PDF/TTF/etc files have to be included.
|
||||
* Failing to provide necessary information or not using the issue template will cause the issue to be closed until required information is provided.
|
||||
* Please report one feature or one bug per issue.
|
||||
|
||||
Feature requests
|
||||
-------------
|
||||
|
||||
Feature requests have to be labeled as such and have to include reasoning for the change in question.
|
||||
|
||||
|
||||
Pull requests
|
||||
-------------
|
||||
|
||||
Pull requests should be always based on the default [development](https://github.com/mpdf/mpdf/tree/development)
|
||||
branch except for backports to older versions.
|
||||
|
||||
Guidelines:
|
||||
|
||||
* Use an aptly named feature branch for the Pull request.
|
||||
* Only files and lines affecting the scope of the Pull request must be affected.
|
||||
* Make small, *atomic* commits that keep the smallest possible related code changes together.
|
||||
* Code must be accompanied by a unit test testing expected behaviour whenever possible.
|
||||
* To be incorporated, the PR should contain a change in the CHANGELOG.md file describing itself
|
||||
|
||||
When updating a PR, do not create a new one, just `git push --force` to your former feature branch, the PR will
|
||||
update itself.
|
||||
1
vendor/mpdf/mpdf/.github/FUNDING.yml
vendored
Normal file
1
vendor/mpdf/mpdf/.github/FUNDING.yml
vendored
Normal file
@ -0,0 +1 @@
|
||||
custom: https://www.paypal.me/mpdf
|
||||
35
vendor/mpdf/mpdf/.github/ISSUE_TEMPLATE/01_bug_report.yml
vendored
Normal file
35
vendor/mpdf/mpdf/.github/ISSUE_TEMPLATE/01_bug_report.yml
vendored
Normal file
@ -0,0 +1,35 @@
|
||||
name: Bug report 🐛
|
||||
description: The library does not work as expected
|
||||
body:
|
||||
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Guidelines
|
||||
description: Please confirm this is a bug report and not general troubleshooting.
|
||||
options:
|
||||
- label: I understand that [if I fail to provide all required details, this issue may be closed without review](https://github.com/mpdf/mpdf/blob/development/.github/CONTRIBUTING.md).
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Description of the bug
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: mPDF version
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: PHP Version and environment (server type, cli provider etc., enclosing libraries and their respective versions)
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Reproducible PHP+CSS+HTML snippet suffering by the error
|
||||
validations:
|
||||
required: true
|
||||
8
vendor/mpdf/mpdf/.github/ISSUE_TEMPLATE/02_feature_request.yml
vendored
Normal file
8
vendor/mpdf/mpdf/.github/ISSUE_TEMPLATE/02_feature_request.yml
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
name: Feature request 🚀
|
||||
description: I would like to have a new functionality added
|
||||
body:
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Please describe the new functionality as best as you can.
|
||||
validations:
|
||||
required: true
|
||||
8
vendor/mpdf/mpdf/.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
8
vendor/mpdf/mpdf/.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: General questions and troubleshooting ❓
|
||||
url: https://github.com/mpdf/mpdf/discussions
|
||||
about: You can use Github Discussions for general questions and troubleshooting. Please note that asking at Stack Overflow will probably be more successful.
|
||||
- name: QA at Stack Overflow ❓
|
||||
url: https://stackoverflow.com/questions/tagged/mpdf
|
||||
about: Ask at Stack Overflow for a greater chance of a quick and correct answer to your questions. Make sure to comply to SO rules, terms and conditions.
|
||||
6
vendor/mpdf/mpdf/.github/SECURITY.md
vendored
Normal file
6
vendor/mpdf/mpdf/.github/SECURITY.md
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
How to disclose potential security issues
|
||||
============
|
||||
|
||||
As mPDF does not have a domain or a dedicated contact apart from its Github repository, to prevent
|
||||
disclosing maintainers' contacts publicly, please create an Issue about the security issue with means to contact you.
|
||||
We will reach out to you as soon as possible.
|
||||
42
vendor/mpdf/mpdf/.github/workflows/coverage.yml
vendored
Normal file
42
vendor/mpdf/mpdf/.github/workflows/coverage.yml
vendored
Normal file
@ -0,0 +1,42 @@
|
||||
# https://help.github.com/en/categories/automating-your-workflow-with-github-actions
|
||||
|
||||
name: "Code coverage"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- "development"
|
||||
- "coverage"
|
||||
|
||||
jobs:
|
||||
|
||||
coverage:
|
||||
|
||||
name: "Code coverage"
|
||||
|
||||
runs-on: ${{ matrix.operating-system }}
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
php-version:
|
||||
- "7.4"
|
||||
|
||||
operating-system: [ubuntu-latest]
|
||||
|
||||
steps:
|
||||
- name: "Checkout"
|
||||
uses: "actions/checkout@v3"
|
||||
|
||||
- name: "Install PHP"
|
||||
uses: "shivammathur/setup-php@v2"
|
||||
with:
|
||||
coverage: "xdebug"
|
||||
php-version: "${{ matrix.php-version }}"
|
||||
extensions: "mbstring, gd, bcmath, bz2"
|
||||
tools: composer:v2
|
||||
|
||||
- name: "Install dependencies"
|
||||
run: "composer install --no-interaction --no-progress"
|
||||
|
||||
- name: "Code coverage"
|
||||
run: composer coverage
|
||||
43
vendor/mpdf/mpdf/.github/workflows/cs.yml
vendored
Normal file
43
vendor/mpdf/mpdf/.github/workflows/cs.yml
vendored
Normal file
@ -0,0 +1,43 @@
|
||||
# https://help.github.com/en/categories/automating-your-workflow-with-github-actions
|
||||
|
||||
name: "Coding standard check"
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- "development"
|
||||
- "test"
|
||||
|
||||
jobs:
|
||||
|
||||
cs:
|
||||
|
||||
name: "Coding standard"
|
||||
|
||||
runs-on: ${{ matrix.operating-system }}
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
php-version:
|
||||
- "7.4"
|
||||
|
||||
operating-system: [ubuntu-latest]
|
||||
|
||||
steps:
|
||||
- name: "Checkout"
|
||||
uses: "actions/checkout@v3"
|
||||
|
||||
- name: "Install PHP"
|
||||
uses: "shivammathur/setup-php@v2"
|
||||
with:
|
||||
coverage: "none"
|
||||
php-version: "${{ matrix.php-version }}"
|
||||
extensions: "mbstring"
|
||||
tools: composer:v2
|
||||
|
||||
- name: "Install dependencies"
|
||||
run: "composer install --no-interaction --no-progress"
|
||||
|
||||
- name: "CS"
|
||||
run: composer cs
|
||||
53
vendor/mpdf/mpdf/.github/workflows/tests.yml
vendored
Normal file
53
vendor/mpdf/mpdf/.github/workflows/tests.yml
vendored
Normal file
@ -0,0 +1,53 @@
|
||||
# https://help.github.com/en/categories/automating-your-workflow-with-github-actions
|
||||
|
||||
name: "CI"
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- "master"
|
||||
- "development"
|
||||
- "test"
|
||||
|
||||
jobs:
|
||||
|
||||
tests:
|
||||
|
||||
name: "Tests"
|
||||
|
||||
runs-on: ${{ matrix.operating-system }}
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-version:
|
||||
- "5.6"
|
||||
- "7.0"
|
||||
- "7.1"
|
||||
- "7.2"
|
||||
- "7.3"
|
||||
- "7.4"
|
||||
- "8.0"
|
||||
- "8.1"
|
||||
- "8.2"
|
||||
operating-system: [ubuntu-latest, windows-latest]
|
||||
|
||||
steps:
|
||||
- name: "Checkout"
|
||||
uses: "actions/checkout@v3"
|
||||
|
||||
- name: "Install PHP"
|
||||
uses: "shivammathur/setup-php@v2"
|
||||
with:
|
||||
coverage: "none"
|
||||
php-version: "${{ matrix.php-version }}"
|
||||
extensions: "mbstring, gd, bcmath, bz2"
|
||||
tools: composer:v2
|
||||
ini-values: error_reporting=-1
|
||||
|
||||
- name: "Install dependencies"
|
||||
run: "composer install --no-interaction --no-progress"
|
||||
|
||||
- name: "Tests"
|
||||
run: composer test
|
||||
2
vendor/mpdf/mpdf/.gitignore
vendored
Normal file
2
vendor/mpdf/mpdf/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
vendor/*
|
||||
composer.lock
|
||||
794
vendor/mpdf/mpdf/CHANGELOG.md
vendored
Normal file
794
vendor/mpdf/mpdf/CHANGELOG.md
vendored
Normal file
@ -0,0 +1,794 @@
|
||||
mPDF 8.2.x
|
||||
===========================
|
||||
|
||||
New features
|
||||
------------
|
||||
* Watermark text can now be colored using \Mpdf\Watermark DTO. \Mpdf\WatermarkImage DTO for images. (#1876)
|
||||
|
||||
mPDF 8.1.x
|
||||
===========================
|
||||
|
||||
New features
|
||||
------------
|
||||
|
||||
* Service container for internal services
|
||||
* Set /Lang entry for better accessibility when document language is available (@cuongmits, #1418)
|
||||
* More verbose helper methods for `Output`: `OutputBinaryData`, `OutputHttpInline`, `OutputHttpDownload`, `OutputFile` (since v8.1.2)
|
||||
* Set font-size to `auto` in textarea and input in active forms to resize the font-size (@ChrisB9, #1721)
|
||||
* PHP 8.2 support in mPDF 8.1.3
|
||||
* Added support for `psr/log` v3 without dropping v2. (@markdorison, @apotek, @greg-1-anderson, #1857)
|
||||
* Added support for `psr/http-message` v2 without dropping v1. (@markdorison, @apotek, @greg-1-anderson, @NigelCunningham #1907)
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
* Better exception message about fonts with MarkGlyphSets (Fix for #1408)
|
||||
* Updated Garuda font with fixed "k" character (Fix for #1440)
|
||||
* Testing and suppressing PNG file conversion errors
|
||||
* Prevent hyphenation of urls starting with https and e-mail addresses (@HKandulla, #1634)
|
||||
* Colorspace restrictor reads mode from Mpdf and works again (Fix for #1094)
|
||||
* Prevent exception when multiple columns wrap to next page
|
||||
* Update default `curlUserAgent` configuration variable from Firefox 13 to 108
|
||||
|
||||
mPDF 8.0.x
|
||||
===========================
|
||||
|
||||
* Ability to customize User-Agent header in the HTTP requests sent by cURL (@samuelecat, #1229)
|
||||
* Add Page Number Myanmar Language Support (@MinKyawNyunt, #1201)
|
||||
* new `Mpdf\Exception\FontException` extending base `MpdfException` was introduced and is thrown on Font manipulation
|
||||
* A bit cleaner exception messages for font-related errors
|
||||
* Use atomic cache writing. (@PATROMO, #1186)
|
||||
* Fix: "Undefined index: group" when calling MultiCell when using font without OTL data (@Kekos, #1213, #941)
|
||||
* Add C128RAW barcode type to create any barcode (ex: subtype change in middle of barcode) (#1124)
|
||||
* Add proxy support to curl
|
||||
* Fixed date and time format in the informations dictionary (#1083, @peterdevpl)
|
||||
* Checking allowed stream wrappers in CssManager
|
||||
* PHP 7.4 support (until final 7.4 release with composer --ignore-platform-reqs)
|
||||
* Improve debugging of remote content issues (@ribeirobreno)
|
||||
* Added `exposeVersion` configuration variable allowing to hide mPDF version from Producer tag and HTTP headers
|
||||
* Added the check for JPEG SOF header 0xFF 0xC1 (extended) (@jamiejones85)
|
||||
* Allows setting `none` as zoom mode in `SetDisplayMode` method, so that OpenAction is not written (#602)
|
||||
* Allowed image stream whitelist to be customised (#1005, thanks @jakejackson)
|
||||
* Fixed parsing of top-left-bottom-right CSS rules with !important (#1009)
|
||||
* Fixed skipping ordered list numbering with page-break-inside: avoid (#339)
|
||||
* Compound classes selector support, like `.one.two` or `div.message.special` (#538, @peterdevpl)
|
||||
* Fixed CMYK colors in text-shadow (#1115, @lexilya)
|
||||
* Skip non supported wrappers when resolving paths (#1204, @MarkVaughn)
|
||||
* Fixed SVGs using a style tag, has styles ignored ( Requires ext-dom ) (#450, @antman3351)
|
||||
* Allows `{nb}`, `{nbpg}`, `{PAGENO}` and `{DATE ...}` substitution in body (#172 and #267, @Dasc3er)
|
||||
* Cache now creates a dedicated subdirectory `/mpdf`.
|
||||
* It is possible to disable automatic cache cleanup with `cacheCleanupInterval` config variable
|
||||
* PHP 8.0 is supported since 8.0.10 (#1263)
|
||||
* Fix: First header of named page is added twice (@antman3351, #1320)
|
||||
* Added `curlExecutionTimeout` configuration variable allowing to `CURLOPT_TIMEOUT` when fetching remote content
|
||||
* Fix: Not all combinations were generated for more than three compound classes (@JeppeKnockaert)
|
||||
* Added `quiet_zone_left` and `quiet_zone_right` to barcodes which support quiet zones in order to customize its width
|
||||
* Updated `CssManager` to use the `RemoteContentFetcher` class instead of `curl` natively (@greew)
|
||||
* Added optional `continue2pages` parameter to `SetDocTemplate` method, allowing a template to continue the last 2 pages alternately (@bmg-ruudv)
|
||||
* Ensure that all digits of a string are hexadecimal before decoding in ColorConverter (@derklaro)
|
||||
* Fix: Using mpdf in phar package leads to weird errors (#1504, @sandreas)
|
||||
* WEBP images support (#1525)
|
||||
|
||||
|
||||
mPDF 8.0.0
|
||||
===========================
|
||||
|
||||
### 15/03/2019
|
||||
|
||||
* Updated FPDI dependency to version 2 (thanks a lot, @JanSlabon)
|
||||
- removed `SetImportUse` method
|
||||
- case of `ImportPage` method changed to `importPage`
|
||||
- similarly, case of `setSourceFile` and `useTemplate` was changed to a lowercase first letter.
|
||||
- signature of `importPage` changed
|
||||
- returned value of `useTemplate` changed
|
||||
* Moved QRCode generating code portions to external package _mpdf/qrcode_
|
||||
- This reduced package size considerably (ca 6MB)
|
||||
* Fraction sizes without leading zeros allowed for font sizes (#973, thanks @peterdevpl)
|
||||
* WriteHTML is now strict about used `$mode` parameter (#915, thanks, @tomtomau)
|
||||
* Fixed regression in nested tables (#860, thanks, @machour)
|
||||
* Scientific notation handling in CSS font sizes (#753, thanks, @peterdevpl)
|
||||
|
||||
|
||||
mPDF 7.1.x
|
||||
===========================
|
||||
|
||||
* PHAR security issue fixed (thanks, @jakejackson)
|
||||
* Font temporary data saved as JSON instead of generating PHP files (thanks, @jakejackson)
|
||||
* cURL handling enhancements (thanks, @jakejackson)
|
||||
* SVG parsing fixes (thanks, @achretien)
|
||||
* Write PDF content with *Writer service classes
|
||||
* PHP 7.3 is supported
|
||||
* Added myclabs/deepcopy dependency, fixed TOC page numbering (thanks, @jakejackson)
|
||||
* Custom color for QR codes
|
||||
* Added support for orientation config key
|
||||
* Code and tests cleanups and enhancements
|
||||
- PHPUnit dedicated assertions (thanks, @carusogabriel)
|
||||
- WriteHTML part constants (thanks, @tomtomau)
|
||||
- Various notice fixes (kudos to all respective authors)
|
||||
|
||||
mPDF 7.0.x
|
||||
===========================
|
||||
|
||||
* Allow passing file content or file path to `SetAssociatedFiles` (#558)
|
||||
* Allowed ^1.4 and ^2.0 of paragon/random_compat to allow wider usage
|
||||
* Fix of undefined _getImage function (#539)
|
||||
* Code cleanup
|
||||
* Better writable rights for temp dir validation (#534)
|
||||
* Fix displaying dollar character in footer with core fonts (#520)
|
||||
* Fixed missed code2utf call (#531)
|
||||
* Refactored and cleaned-up classes and subnamespaces
|
||||
|
||||
|
||||
mPDF 7.0.0
|
||||
===========================
|
||||
|
||||
### 19/10/2017
|
||||
|
||||
Backward incompatible changes
|
||||
-----------------------------
|
||||
|
||||
- PHP `^5.6 || ~7.0.0 || ~7.1.0 || ~7.2.0` is required.
|
||||
- Entire project moved under `Mpdf` namespace
|
||||
- Practically all classes renamed to use `PascalCase` and named to be more verbose
|
||||
- Changed directory structure to comply to `PSR-4`
|
||||
- Removed explicit require calls, replaced with Composer autoloading
|
||||
- Removed configuration files
|
||||
- All configuration now done via `__construct` parameter (see below)
|
||||
- Changed `\Mpdf\Mpdf` constructor signature
|
||||
- Class now accepts only single array `$config` parameter
|
||||
- Array keys are former `config.php` and `config_fonts.php` properties
|
||||
- Additionally, former constructor parameters can be used as keys
|
||||
- `tempDir` directory now must be writable, otherwise an exception is thrown
|
||||
- ICC profile is loaded as entire path to file (to prevent a need to write inside vendor directory)
|
||||
- Moved examples to separate repository
|
||||
- Moved `TextVars` constants to separate class
|
||||
- Moved border constants to separate class
|
||||
- `scriptToLang` and `langToFont` in separate interfaced class methods
|
||||
- Will now throw an exception when `mbstring.func_overload` is set
|
||||
- Moved Glyph operator `GF_` constants in separate `\Mpdf\Fonts\GlyphOperator` class
|
||||
- All methods in Barcode class renamed to camelCase including public `dec_to_hex` and `hex_to_dec`
|
||||
- Decimal conversion methods (to roman, cjk, etc.) were moved to classes in `\Mpdf\Conversion` namespace
|
||||
- Images in PHP variables (`<img src="var:smileyface">`) were moved from direct Mpdf properties to `Mpdf::$imageVars` public property array
|
||||
- Removed global `_SVG_AUTOFONT` and `_SVG_CLASSES` constants in favor of `svgAutoFont` and `svgClasses` configuration keys
|
||||
- Moved global `_testIntersect`, `_testIntersectCircle` and `calc_bezier_bbox` fucntions inside `Svg` class as private methods.
|
||||
- Changed names to camelCase without underscores and to `computeBezierBoundingBox`
|
||||
- Security: Embedded files via `<annotation>` custom tag must be explicitly allowed via `allowAnnotationFiles` configuration key
|
||||
- `fontDir` property of Mpdf class is private and must be accessed via configuration variable with array of paths or `AddFontDirectory` method
|
||||
- QR code `<barcode>` element now treats `\r\n` and `\n` as actual line breaks
|
||||
- cURL is prefered over socket when downloading images.
|
||||
- Removed globally defined functions from `functions.php` in favor of `\Mpdf\Utils` classes `PdfDate` and `UtfString`.
|
||||
- Unused global functions were removed entirely.
|
||||
|
||||
|
||||
Removed features
|
||||
----------------
|
||||
|
||||
- Progressbar support
|
||||
- JpGraph support
|
||||
- `error_reporting` changes
|
||||
- Timezone changes
|
||||
- `compress.php` utility
|
||||
- `_MPDF_PATH` and `_MPDF_URI` constants
|
||||
- `_MPDF_TEMP_PATH` constant in favor of `tempDir` configuration variable
|
||||
- `_MPDF_TTFONTDATAPATH` in favor of `tempDir` configuration variable
|
||||
- `_MPDFK` constant in favor of `\Mpdf\Mpdf::SCALE` class constant
|
||||
- `FONT_DESCRIPTOR` constant in favor of `fontDescriptor` configuration variable
|
||||
- `_MPDF_SYSTEM_TTFONTS` constant in favor of `fontDir` configuration variable with array of paths or `AddFontDirectory` method
|
||||
- HTML output of error messages and debugs
|
||||
- Formerly deprecated methods
|
||||
|
||||
|
||||
Fixes and code enhancements
|
||||
----------------------------
|
||||
|
||||
- Fixed joining arab letters
|
||||
- Fixed redeclared `unicode_hex` function
|
||||
- Converted arrays to short syntax
|
||||
- Refactored and tested color handling with potential conversion fixes in `hsl*()` color definitions
|
||||
- Refactored `Barcode` class with separate class in `Mpdf\Barcode` namespace for each barcode type
|
||||
- Fixed colsum calculation for different locales (by @flow-control in #491)
|
||||
- Image type guessing from content separated to its own class
|
||||
|
||||
|
||||
New features
|
||||
------------
|
||||
|
||||
- Refactored caching (custom `Cache` and `FontCache` classes)
|
||||
- Implemented `Psr\Log\LoggerAware` interface
|
||||
- All debug and additional messages are now sent to the logger
|
||||
- Messages can be filtered based on `\Mpdf\Log\Context` class constants
|
||||
- `FontFileFinder` class allowing to specify multiple paths to search for fonts
|
||||
- `MpdfException` now extends `ErrorException` to allow specifying place in code where error occured
|
||||
- Generating font metrics moved to separate class
|
||||
- Added `\Mpdf\Output\Destination` class with verbose output destination constants
|
||||
- Availability to set custom default CSS file
|
||||
- Availability to set custom hyphenation dictionary file
|
||||
- Refactored code portions to new "separate" classes:
|
||||
- `Mpdf\Color\*` classes
|
||||
- `ColorConvertor`
|
||||
- `ColorModeConvertor`
|
||||
- `ColorSpaceRestrictor`
|
||||
- `Mpdf\SizeConvertor`
|
||||
- `Mpdf\Hyphenator`
|
||||
- `Mpdf\Image\ImageProcessor`
|
||||
- `Mpdf\Image\ImageTypeGuesser`
|
||||
- `Mpdf\Conversion\*` classes
|
||||
- Custom watermark angle with `watermarkAngle` configuration variable
|
||||
- Custom document properties (idea by @zarubik in #142)
|
||||
- PDF/A-3 associated files + additional xmp rdf (by @chab in #130)
|
||||
- Additional font directories can be added via `addFontDir` method
|
||||
- Introduced `cleanup` method which restores original `mb_` encoding settings (see #421)
|
||||
- QR code `<barcode>` element now treats `\r\n` and `\n` as actual line breaks
|
||||
- Customizable following of 3xx HTTP redirects, validation of SSL certificates, cURL timeout.
|
||||
- `curlFollowLocation`
|
||||
- `curlAllowUnsafeSslRequests`
|
||||
- `curlTimeout`
|
||||
- QR codes can be generated without a border using `disableborder="1"` HTML attribute in `<barcode>` tag
|
||||
|
||||
|
||||
Git repository enhancements
|
||||
---------------------------
|
||||
|
||||
- Added contributing guidelines
|
||||
- Added Issue template
|
||||
|
||||
|
||||
mPDF 6.1.0
|
||||
===========================
|
||||
|
||||
### 26/04/2016
|
||||
|
||||
- Composer updates
|
||||
- First release officially supporting Composer
|
||||
- Updated license in composer.json
|
||||
- Chmod 777 on dirs `ttfontdata`, `tmp`, `graph_cache` after composer install
|
||||
- Requiring PHP 5.4.0+ with Composer
|
||||
- Code style
|
||||
- Reformated (almost) all PHP files to keep basic code style
|
||||
- Removed trailing whitespaces
|
||||
- Converted all txt, php, css, and htm files to utf8
|
||||
- Removed closing PHP tags
|
||||
- Change all else if calls to elseif
|
||||
- Added base PHPUnit tests
|
||||
- Added Travis CI integration with unit tests
|
||||
- Changed all `mPDF::Error` and `die()` calls to throwing `MpdfException`
|
||||
- PDF Import changes
|
||||
- FPDI updated to 1.6.0 to fix incompatible licenses
|
||||
- FPDI loaded from Composer or manually only
|
||||
- Removed iccprofiles/CMYK directory
|
||||
- Renamed example files: change spaces to underscores to make scripting easier
|
||||
- Fixed `LEDGER` and `TABLOID` paper sizes
|
||||
- Implemented static cache for mpdf function `ConvertColor`.
|
||||
- Removed PHP4 style constructors
|
||||
- Work with HTML tags separated to `Tag` class
|
||||
- Fixed most Strict standards PHP errors
|
||||
- Add config constant so we can define custom font data
|
||||
- HTML
|
||||
- fax & tel support in href attribute
|
||||
- Check $html in `$mpdf->WriteHTML()` to see if it is an integer, float, string, boolean or
|
||||
a class with `__toString()` and cast to a string, otherwise throw exception.
|
||||
- PHP 7
|
||||
- Fix getting image from internal variable in PHP7 (4dcc2b4)
|
||||
- Fix PHP7 Fatal error: `'break' not in the 'loop' or 'switch' context` (002bb8a)
|
||||
- Fixed output file name for `D` and `I` output modes (issue #105, f297546)
|
||||
|
||||
mPDF 6.0
|
||||
===========================
|
||||
|
||||
### 20/12/2014
|
||||
|
||||
New features / Improvements
|
||||
---------------------------
|
||||
- Support for OpenTypeLayout tables / features for complex scripts and Advances Typography.
|
||||
- Improved bidirectional text handling.
|
||||
- Improved line-breaking, including for complex scripts e.g. Lao, Thai and Khmer.
|
||||
- Updated page-breaking options.
|
||||
- Automatic language mark-up and font selection using autoScriptToLang and autoLangToFont.
|
||||
- Kashida for text-justification in arabic scripts.
|
||||
- Index collation for non-ASCII characters.
|
||||
- Index mark-up allowing control over layout using CSS.
|
||||
- `{PAGENO}` and `{nbpg}` can use any of the number types as in list-style e.g. set in `<pagebreak>` using pagenumstyle.
|
||||
- CSS support for lists.
|
||||
- Default stylesheet - `mpdf.css` - updated.
|
||||
|
||||
Added CSS support
|
||||
-----------------
|
||||
- lang attribute selector e.g. :lang(fr), [lang="fr"]
|
||||
- font-variant-position
|
||||
- font-variant-caps
|
||||
- font-variant-ligatures
|
||||
- font-variant-numeric
|
||||
- font-variant-alternates - Only [normal | historical-forms] supported (i.e. most are NOT supported)
|
||||
- font-variant - as above, and except for: east-asian-variant-values, east-asian-width-values, ruby
|
||||
- font-language-override
|
||||
- font-feature-settings
|
||||
- text-outline is now supported on TD/TH tags
|
||||
- hebrew, khmer, cambodian, lao, and cjk-decimal recognised as values for "list-style-type" in numbered lists and page numbering.
|
||||
- list-style-image and list-style-position
|
||||
- transform (on `<img>` only)
|
||||
- text-decoration:overline
|
||||
- image-rendering
|
||||
- unicode-bidi (also `<bdi>` tag)
|
||||
- vertical-align can use lengths e.g. 0.5em
|
||||
- line-stacking-strategy
|
||||
- line-stacking-shift
|
||||
|
||||
mPDF 5.7.4
|
||||
================
|
||||
|
||||
### 15/12/2014
|
||||
|
||||
Bug Fixes & Minor Additions
|
||||
---------------------------
|
||||
- SVG images now support embedded images e.g. `<image xlink:href="image.png" width="100px" height="100px" />`
|
||||
- SVG images now supports `<tspan>` element e.g. `<tspan x,y,dx,dy,text-anchor >`, and also `<tref>`
|
||||
- SVG images now can use Autofont (see top of `classes/svg.php` file)
|
||||
- SVG images now has limited support for CSS classes (see top of `classes/svg.php` file)
|
||||
- SVG images - style inheritance improved
|
||||
- SVG images - improved handling of comments and other extraneous code
|
||||
- SVG images - fix to ensure opacity is reset before another element
|
||||
- SVG images - font-size not resetting after a `<text>` element
|
||||
- SVG radial gradients bug (if the focus [fx,fy] lies outside circle defined by [cx,cy] and r) cf. pservers-grad-15-b.svg
|
||||
- SVG allows spaces in attribute definitions in `<use>` or `<defs>` e.g. `<use x = "0" y = "0" xlink:href = "#s3" />`
|
||||
- SVG text which contains a `<` sign, it will break the text - now processed as `<` (despite the fact that this does not conform to XML spec)
|
||||
- SVG images - support automatic font selection and (minimal) use of CSS classes - cf. the defined constants at top of svg.php file
|
||||
- SVG images - text-anchor now supported as a CSS style, as well as an HTML attribute
|
||||
- CSS support for :nth-child() selector improved to fully support the draft CSS3 spec - http://www.w3.org/TR/selectors/#nth-child-pseudo
|
||||
[NB only works on table columns or rows]
|
||||
- text-indent when set as "em" - incorrectly calculated if last text in line in different font size than for block
|
||||
- CSS not applying cascaded styles on `<A>` elements - [changed MergeCSS() type to INLINE for 'A', LEGEND, METER and PROGRESS]
|
||||
- fix for underline/strikethrough/overline so that line position(s) are based correctly on font-size/font in nested situations
|
||||
- Error: Strict warning: Only variables should be passed by reference - in PHP5.5.9
|
||||
- bug accessing images from some servers (HTTP 403 Forbidden whn accessed using fopen etc.)
|
||||
- Setting page format incorrectly set default twice and missed some options
|
||||
- bug fixed in Overwrite() when specifying replacement as a string
|
||||
- barcode C93 - updated C93 code from TCPDF because of bug - incorrect checksum character for "153-2-4"
|
||||
- Tables - bug when using colspan across columns which may have a cell width specified
|
||||
cf. http://www.mpdf1.com/forum/discussion/2221/colspan-bug
|
||||
- Tables - cell height (when specified) is not resized when table is shrunk
|
||||
- Tables - if table width specified, but narrower than minimum cell wdith, and less than page width - table will expand to
|
||||
minimum cell width(s) as long as $keep_table_proportions = true
|
||||
- Tables - if using packTableData, and borders-collapse, wider border is overwriting content of adjacent cell
|
||||
Test case:
|
||||
```
|
||||
<table style="border-collapse: collapse;">
|
||||
<tr><td style="border-bottom: 42px solid #0FF; "> Hallo world </td></tr>
|
||||
<tr><td style="border-top: 14px solid #0F0; "> Hallo world </td></tr>
|
||||
</table>
|
||||
```
|
||||
- Images - image height is reset proportional to original if width is set to maximum e.g. `<img width="100%" height="20mm">`
|
||||
- URL handling changed to work with special characters in path fragments; affects `<a>` links, `<img>` images and
|
||||
CSS url() e.g background-image
|
||||
- also to ignore `../` included as a query value
|
||||
- Barcodes with bottom numerals e.g. EAN-13 - incorrect numeral size when using core fonts
|
||||
|
||||
--------------------------------
|
||||
|
||||
NB Spec. for embedded SVG images:
|
||||
as per http://www.w3.org/TR/2003/REC-SVG11-20030114/struct.html#ImageElement
|
||||
Attributes supported:
|
||||
- x
|
||||
- y
|
||||
- xlink:href (required) - can be jpeg, png or gif image - not vector (SVG or WMF) image
|
||||
- width (required)
|
||||
- height (required)
|
||||
- preserveAspectRatio
|
||||
|
||||
Note: all attribute names and values are case-sensitive
|
||||
width and height cannot be assigned by CSS - must be attributes
|
||||
|
||||
mPDF 5.7.3
|
||||
================
|
||||
|
||||
### 24/8/2014
|
||||
|
||||
Bug Fixes & Minor Additions
|
||||
---------------------------
|
||||
|
||||
- Tables - cellSpacing and cellPadding taking preference over CSS stylesheet
|
||||
- Tables - background images in table inside HTML Footer incorrectly positioned
|
||||
- Tables - cell in a nested table with a specified width, should determine width of parent table cell
|
||||
(cf. http://www.mpdf1.com/forum/discussion/1648/nested-table-bug-)
|
||||
- Tables - colspan (on a row after first row) exceeds number of columns in table
|
||||
- Gradients in Imported documents (mPDFI) causing error in some browsers
|
||||
- Fatal error after page-break-after:always on root level block element
|
||||
- Support for 'https/SSL' if file_get_contents_by_socket required (e.g. getting images with allow_url_fopen turned off)
|
||||
- Improved support for specified ports when getting external CSS stylesheets e.g. www.domain.com:80
|
||||
- error accessing local .css files with dummy queries (cache-busting) e.g. mpdfstyleA4.css?v=2.0.18.9
|
||||
- start of end tag in PRE incorrectly changed to <
|
||||
- error thrown when open.basedir restriction in effect (deleting temporary files)
|
||||
- image which forces pagebreak incorrectly positioned at top of page
|
||||
- [changes to avoid warning notices by checking if (isset(x)) before referencing it]
|
||||
- text with letter-spacing set inside table which needs to be resixed (shrunk) - letter-spacing was not adjusted
|
||||
- nested table incorrectly calculating width and unnecessarily wrapping text
|
||||
- vertical-align:super|sub can be nested using `<span>` elements
|
||||
- inline elements can be nested e.g. text `<sup>text<sup>13</sup>text</sup>` text
|
||||
- CSS vertical-align:0.5em (or %) now supported
|
||||
- underline and strikethrough now use the parent inline block baseline/fontsize/color for child inline elements *** change in behaviour
|
||||
(Adjusts line height to take account of superscript and subscript except in tables)
|
||||
- nested table incorrectly calculating width and unnecessarily wrapping text
|
||||
- tables - font size carrying over from one nested table to the next nested table
|
||||
- tables - border set as attribute on `<TABLE>` overrides border set as CSS on `<TD>`
|
||||
- tables - if table width set to 100% and one cell/column is empty with no padding/border, sizing incorrectly
|
||||
(http://www.mpdf1.com/forum/discussion/1886/td-fontsize-in-nested-table-bug-#Item_5)
|
||||
- `<main>` added as recognised tag
|
||||
- CSS style transform supported on `<img>` element (only)
|
||||
All transform functions are supported except matrix() i.e. translate(), translateX(), translateY(), skew(), skewX(), skewY(),
|
||||
scale(), scaleX(), scaleY(), rotate()
|
||||
NB When using Columns or Keep-with-table (use_kwt), cannot use transform
|
||||
- CSS background-color now supported on `<img>` element
|
||||
- @page :first not recognised unless @page {} has styles set
|
||||
- left/right margins not allowed on @page :first
|
||||
|
||||
mPDF 5.7.2
|
||||
================
|
||||
|
||||
### 28/12/2013
|
||||
|
||||
Bug Fixes
|
||||
---------
|
||||
|
||||
- `<tfoot>` not printing at all (since v5.7)
|
||||
- list-style incorrectly overriding list-style-type in cascading CSS
|
||||
- page-break-after:avoid not taking into account bottom padding and margin when estimating if next line can fit on page
|
||||
- images not displayed when using "https://" if images are referenced by src="//domain.com/image"
|
||||
- +aCJK incorrectly parsed when instantiating class e.g. new mpDF('ja+aCJK')
|
||||
- line-breaking - zero-width object at end of line (e.g. index entry) causing a space left untrimmed at end of line
|
||||
- ToC since v5.7 incorrectly handling non-ascii characters, entities or tags
|
||||
- cell height miscalculated when using hard-hyphenate
|
||||
- border colors set with transparency not working
|
||||
- transparency settings for stroke and fill interfering with one another
|
||||
- 'float' inside a HTML header/footer - not clearing the float before first line of text
|
||||
- error if script run across date change at midnight
|
||||
- temporary file name collisions (e.g. when processing images) if numerous users
|
||||
- `<watermarkimage>` position attribute not working
|
||||
- `<` (less-than sign) inside a PRE element, and NOT start of a valid tag, was incorrectly removed
|
||||
- file attachments not opening in Reader XI
|
||||
- JPG images not recognised if not containing JFIF or Exif markers
|
||||
- instance of preg_replace with /e modifier causing error in PHP 5.5
|
||||
- correctly handle CSS URLs with no scheme
|
||||
- Index entries causing errors when repeat entries are used within page-break-inside:avoid, rotated tables etc.
|
||||
- table with fixed width column and long word in cell set to colspan across this column (adding spare width to all columns)
|
||||
- incorrect hyphenation if multiple soft-hyphens on line before break
|
||||
- SVG images - objects contained in `<defs>` being displayed
|
||||
- SVG images - multiple, or quoted fonts e.g. style="font-family:'lucida grande', verdana" not recognised
|
||||
- SVG images - line with opacity=0 still visible (only in some PDF viewers/browsers)
|
||||
- text in an SVG image displaying with incorrect font in some PDF viewers/browsers
|
||||
- SVG images - fill:RGB(0,0,0) not recognised when uppercase
|
||||
- background images using data:image\/(jpeg|gif|png);base64 format - error when reading in stylesheet
|
||||
|
||||
New CSS support
|
||||
---------------
|
||||
|
||||
- added support for style="opacity:0.6;" in SVG images - previously only supported style="fill-opacity:0.6; stroke-opacity: 0.6;"
|
||||
- improved PNG image handling for some cases of alpha channel transparency
|
||||
- khmer, cambodian and lao recognised as list-style-type for numbered lists
|
||||
|
||||
SVG Images
|
||||
----------
|
||||
|
||||
- Limited support for `<use>` and `<defs>`
|
||||
|
||||
mPDF 5.7.1
|
||||
================
|
||||
## 01/09/2013
|
||||
|
||||
1) FILES: mpdf.php
|
||||
|
||||
Bug fix; Dollar sign enclosed by `<pre>` tag causing error.
|
||||
Test e.g.: `<pre>Test $1.00 Test</pre> <pre>Test $2.00 Test</pre> <pre>Test $3.00 Test</pre> <pre>Test $4.00 Test</pre>`
|
||||
|
||||
-----------------------------
|
||||
|
||||
2) FILES: includes/functions.php AND mpdf.php
|
||||
|
||||
Changes to `preg_replace` with `/e` modifier to use `preg_replace_callback`
|
||||
(/e depracated from PHP 5.5)
|
||||
|
||||
-----------------------------
|
||||
|
||||
3) FILES: classes/barcode.php
|
||||
|
||||
Small change to function `barcode_c128()` which allows ASCII 0 - 31 to be used in C128A e.g. chr(13) in:
|
||||
`<barcode code="5432
1068" type="C128A" />`
|
||||
|
||||
-----------------------------
|
||||
|
||||
4) FILES: mpdf.php
|
||||
|
||||
Using $use_kwt ("keep-[heading]-with-table") if `<h4></h4>` before table is on 2 lines and pagebreak occurs after first line
|
||||
the first line is displayed at the bottom of the 2nd page.
|
||||
Edited so that $use_kwt only works if the HEADING is only one line. Else ignores (but prints correctly)
|
||||
|
||||
-----------------------------
|
||||
|
||||
5) FILES: mpdf.php
|
||||
|
||||
Clearing old temporary files from `_MPDF_TEMP_PATH` will now ignore "hidden" files e.g. starting with a "`.`" `.htaccess`, `.gitignore` etc.
|
||||
and also leave `dummy.txt` alone
|
||||
|
||||
|
||||
mPDF 5.7
|
||||
===========================
|
||||
|
||||
### 14/07/2013
|
||||
|
||||
Files changed
|
||||
-------------
|
||||
- config.php
|
||||
- mpdf.php
|
||||
- classes/tocontents.php
|
||||
- classes/cssmgr.php
|
||||
- classes/svg.php
|
||||
- includes/functions.php
|
||||
- includes/out.php
|
||||
- examples/formsubmit.php [Important - Security update]
|
||||
|
||||
Updated Example Files in /examples/
|
||||
-----------------------------------
|
||||
|
||||
- All example files
|
||||
- mpdfstyleA4.css
|
||||
|
||||
config.php
|
||||
----------
|
||||
|
||||
Removed:
|
||||
- $this->hyphenateTables
|
||||
- $this->hyphenate
|
||||
- $this->orphansAllowed
|
||||
Edited:
|
||||
- "hyphens: manual" - Added to $this->defaultCSS
|
||||
- $this->allowedCSStags now includes '|TEXTCIRCLE|DOTTAB'
|
||||
New:
|
||||
- $this->decimal_align = array('DP'=>'.', 'DC'=>',', 'DM'=>"\xc2\xb7", 'DA'=>"\xd9\xab", 'DD'=>'-');
|
||||
- $this->h2toc = array('H1'=>0, 'H2'=>1, 'H3'=>2);
|
||||
- $this->h2bookmarks = array('H1'=>0, 'H2'=>1, 'H3'=>2);
|
||||
- $this->CJKforceend = false; // Forces overflowng punctuation to hang outside right margin (used with CJK script)
|
||||
|
||||
|
||||
Backwards compatability
|
||||
-----------------------
|
||||
|
||||
Changes in mPDF 5.7 may cause some changes to the way your documents appear. There are two main differences:
|
||||
1) Hyphenation. To retain appearance compatible with earlier versions, set the CSS property "hyphens: auto" whenever
|
||||
you previously used $mpdf->hyphenate=true;
|
||||
2) Table of Contents - appearance can now be controlled with CSS styles. By default, in mPDF 5.7, no styling is applied so you will get:
|
||||
- No indent (previous default of 5mm) - ($tocindent is ignored)
|
||||
- Any font, font-size set ($tocfont or $tocfontsize) will not work
|
||||
- HyperLinks will appear with your default appearance - usually blue and underlined
|
||||
- line spacing will be narrower (can use line-height or margin-top in CSS)
|
||||
|
||||
New features / Improvements
|
||||
---------------------------
|
||||
- Layout of Table of Content ToC now controlled using CSS styles
|
||||
- Text alignment on decimal mark inside tables
|
||||
- Automatically generated bookmarks and/or ToC entries from H1 - H6 tags
|
||||
- Support for unit of "rem" as size e.g. font-size: 1rem;
|
||||
- Origin and clipping for background images and gradients controlled by CSS i.e. background-origin, background-size, background-clip
|
||||
- Text-outline controlled by CSS (compatible with CSS3 spec.)
|
||||
- Use of `<dottab>` enhanced by custom CSS "outdent" property
|
||||
- Image HTML attributes `<img>` added: max-height, max-width, min-height and min-width
|
||||
- Spotcolor can now be defined as it is used e.g. color: spot(PANTONE 534 EC, 100%, 85, 65, 47, 9);
|
||||
- Lists - added support for "start" attribute in `<ol>` e.g. `<ol start="5">`
|
||||
- Hyphenation controlled using CSS, consistent with CSS3 spec.
|
||||
- Line breaking improved to avoid breaks within words where HTML tags are used e.g. H<sub>2<sub>0
|
||||
- Line breaking in CJK scripts improved (and ability to force hanging punctuation)
|
||||
- Numerals in a CJK script are kept together
|
||||
- RTL improved support for phrases containing numerals and \ and /
|
||||
- Bidi override codes supported - Right-to-Left Embedding [RLE] U+202B, Left-to-Right Embedding [LRE] U+202A,
|
||||
U+202C POP DIRECTIONAL FORMATTING (PDF)
|
||||
- Support for `<base href="">` in HTML - uses it to SetBasePath for relative URLs.
|
||||
- HTML tag - added support for `<wbr>` or `<wbr />` - converted to a soft-hyphen
|
||||
- CSS now takes precedence over HTML attribute e.g. `<table bgcolor="black" style="background-color:yellow">`
|
||||
|
||||
Added CSS support
|
||||
-----------------
|
||||
- max-height, max-width, min-height and min-width for images `<img>`
|
||||
- "hyphens: none|manual|auto" as per CSS3 spec.
|
||||
- Decimal mark alignment e.g. text-align: "." center;
|
||||
- "rem" accepted as a valid (font)size in CSS e.g. font-size: 1.5rem
|
||||
- text-outline, text-outline-width and text-outline-color supported everywhere except in tables (blur not supported)
|
||||
- background-origin, background-size, background-clip are now supported everywhere except in tables
|
||||
- "visibility: hidden|visible|printonly|screenonly" for inline elements e.g. `<span>`
|
||||
- Colors: device-cmyk(c,m,y,k) as per CSS3 spec. For consistency, device-cmyka also supported (not CSS3 spec)
|
||||
- "z-index" can be used to utilise layers in the PDF document
|
||||
- Custom CSS property added: "outdent" - opposite of indent
|
||||
|
||||
The HTML elements `<dottab>` and `<textcircle>` can now have CSS properties applied to them.
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
- SVG images - path including e.g. 1.234E-15 incorrectly parsed (not recognising capital E)
|
||||
- Tables - if a table starts when the Y position on page is below bottom margin caused endless loop
|
||||
- Float-ing DIVs - starting a float at bottom of page and it causes page break before anything output, second new page is forced
|
||||
- Tables - Warning notice now given in Table footer or header if `<tfoot>` placed after `<tbody>` and table spans page
|
||||
- Columns - block with border-width wider than the length of the border line, line overflows
|
||||
- Columns - block with no padding containing a block with borders but no backgound colour, borders not printed
|
||||
- Table in Columns - when background color set by surrounding block element - colour missing for height of half bottom border.
|
||||
- TOCpagebreakByArray() when called by function was not adding the pagebreak
|
||||
- Border around block element - dashed not showing correctly (not resetting linewidth between different edges)
|
||||
- Double border in table - when background colour set in surrounding block element - shows as black line between the 2 bits of double
|
||||
- Borders around DIVs - "double" border problem if not all 4 sides equally - fixed
|
||||
- Borders around DIVs - solid (and double) borders overlap as in tables - now fixed so mitred joins as in browser
|
||||
[Inadvertently improves borders in Columns because of change in LineCap]
|
||||
- Page numbering - $mpdf->pagenumSuffix etc not suppressed in HTML headers/footers if number suppressed
|
||||
- Page numbering - Page number total {nbpg} incorrect - e.g. showing decreasing numbers through document, when ToC present
|
||||
- RTL numerals - incorrectly reversing a number followed by a comma
|
||||
- Transform to uppercase/lowercase not working for chars > ASCII 128 when using core fonts
|
||||
- TOCpagebreak - Not setting TOC-FOOTER
|
||||
- TOCpagebreak - toc-even-header-name etc. not working
|
||||
- Parsing some relative URLs incorrectly
|
||||
- Textcircle - when moved to next page by "page-break-inside: avoid"
|
||||
- Bookmarks will now work if jump more than one level e.g. 0,2,1 Inserts a new blank entry at level 1
|
||||
- Paths to img or stylesheets - incorrectly reading "//www.domain.com" i.e. when starting with two /
|
||||
- data:image as background url() - incorrectly adjusting path on server if MPDF_PATH not specified (included in release mPDF 5.6.1)
|
||||
- Image problem if spaces or commas in path using http:// URL (included in release mPDF 5.6.1)
|
||||
- Image URL parsing rewritten to handle both urlencoded URLs and not urlencoded (included in release mPDF 5.6.1)
|
||||
- `<dottab>` fixed to allow color, font-size and font-family to be correctly used, avoid dots being moved to new page, and to work in RTL
|
||||
- Table {colsum} summed figures in table header
|
||||
- list-style-type (custom) colour not working
|
||||
- `<tocpagebreak>` toc-preHTML and toc-postHTML can now contain quotes
|
||||
|
||||
mPDF 5.6
|
||||
===========================
|
||||
|
||||
### 20/01/2013
|
||||
|
||||
Files changed
|
||||
-------------
|
||||
- mpdf.php
|
||||
- config.php
|
||||
- includes/functions.php
|
||||
- classes/meter.php
|
||||
- classes/directw.php
|
||||
|
||||
|
||||
config.php changes
|
||||
------------------
|
||||
|
||||
- $this->allowedCSStags - added HTML5 tags + textcircle AND
|
||||
- $this->outerblocktags - added HTML5 tags
|
||||
- $this->defaultCSS - added default CSS properties
|
||||
|
||||
New features / Improvements
|
||||
---------------------------
|
||||
CSS support added for for min-height, min-width, max-height and max-width in `<img>`
|
||||
|
||||
Images embedded in CSS
|
||||
- `<img src="data:image/gif;base64,....">` improved to make it more robust, and background: `url(data:image...` now added to work
|
||||
|
||||
HTML5 tags supported
|
||||
- as generic block elements: `<article><aside><details><figure><figcaption><footer><header><hgroup><nav><section><summary>`
|
||||
- as in-line elements: `<mark><time><meter><progress>`
|
||||
- `<mark>` has a default CSS set in config.php to yellow highlight
|
||||
- `<meter>` and `<progress>` support attributes as for HTML5
|
||||
- custom appearances for `<meter>` and `<progress>` can be made by editing `classes/meter.php` file
|
||||
- `<meter>` and `<progress>` suppress text inside the tags
|
||||
|
||||
Textcircle/Circular
|
||||
- font: "auto" added: automatically sizes text to fill semicircle (if both set) or full circle (if only one set)
|
||||
NB for this AND ALL CSS on `<textcircle>`: does not inherit CSS styles
|
||||
- attribute: divider="[characters including HTML entities]" added
|
||||
- `<textcircle r="30mm" top-text="Text Circular Text Circular" bottom-text="Text Circular Text Circular"
|
||||
divider=" • " style="font-size: auto" />`
|
||||
|
||||
» ’ ‚ „ are now included in "orphan"-management at the end of lines
|
||||
|
||||
Improved CJK line wrapping (if CJK character at end of line, breaks there rather than previous wordspace)
|
||||
|
||||
NB mPDF 5.5 added support for `<fieldset>` and `<legend>` (omitted from ChangeLog)
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
|
||||
- embedded fonts: Panose string incorrectly output as decimals - changed to hexadecimal
|
||||
Only a problem in limited circumstances.
|
||||
*****Need to delete all ttfontdata/ files in order for fix to have effect.
|
||||
- `<textCircle>` background white even when set to none/transparent
|
||||
- border="0" causing mPDF to add border to table CELLS as well as table
|
||||
- iteration counter in THEAD crashed in some circumstances
|
||||
- CSS color now supports spaces in the rgb() format e.g. border: 1px solid rgb(170, 170, 170);
|
||||
- CJK not working in table following changes made in v5.4
|
||||
- images fixed to work with Google Chart API (now mPDF does not urldecode the query part of the src)
|
||||
- CSS `<style>` within HTML page crashed if CSS is too large (? > 32Kb)
|
||||
- SVG image nested int eht HTML failed to show if code too large (? > 32Kb)
|
||||
- cyrillic character p р at end of table cell caused cell height to be incorrectly calculated
|
||||
|
||||
mPDF 5.5
|
||||
===========================
|
||||
|
||||
### 02/03/2012
|
||||
|
||||
Files changed
|
||||
-------------
|
||||
|
||||
- mpdf.php
|
||||
- classes/ttfontsuni.php
|
||||
- classes/svg.php
|
||||
- classes/tocontents.php
|
||||
- config.php
|
||||
- config_fonts.php
|
||||
- utils/font_collections.php
|
||||
- utils/font_coverage.php
|
||||
- utils/font_dump.php
|
||||
|
||||
Files added
|
||||
-----------
|
||||
|
||||
classes/ttfontsuni_analysis.php
|
||||
|
||||
config.php changes
|
||||
------------------
|
||||
|
||||
To avoid just the border/background-color of the (empty) end of a block being moved on to next page (`</div></div>`)
|
||||
|
||||
`$this->margBuffer = 0; // Allow an (empty) end of block to extend beyond the bottom margin by this amount (mm)`
|
||||
|
||||
config_fonts.php changes
|
||||
------------------------
|
||||
|
||||
Added to (arabic) fonts to allow "use non-mapped Arabic Glyphs" e.g. for Pashto
|
||||
'unAGlyphs' => true,
|
||||
|
||||
Arabic text
|
||||
-----------
|
||||
|
||||
Arabic text (RTL) rewritten with improved support for Pashto/Sindhi/Urdu/Kurdish
|
||||
Presentation forms added:
|
||||
U+0649, U+0681, U+0682, U+0685, U+069A-U+069E, U+06A0, U+06A2, U+06A3, U+06A5, U+06AB-U+06AE,
|
||||
U+06B0-U+06B4, U+06B5-U+06B9, U+06BB, U+06BC, U+06BE, U+06BF, U+06C0, U+06CD, U+06CE, U+06D1, U+06D3, U+0678
|
||||
Joining improved:
|
||||
U+0672, U+0675, U+0676, U+0677, U+0679-U+067D, U+067F, U+0680, U+0683, U+0684, U+0687, U+0687, U+0688-U+0692,
|
||||
U+0694, U+0695, U+0697, U+0699, U+068F, U+06A1, U+06A4, U+06A6, U+06A7, U+06A8, U+06AA, U+06BA, U+06C2-U+06CB, U+06CF
|
||||
|
||||
Note - Some characters in Pashto/Sindhi/Urdu/Kurdish do not have Unicode values for the final/initial/medial forms of the characters.
|
||||
However, some fonts include these characters "un-mapped" to Unicode (including XB Zar and XB Riyaz, which are bundled with mPDF).
|
||||
`'unAGlyphs' => true`, added to the config_fonts.php file for appropriate fonts will
|
||||
|
||||
This requires the font file to include a Format 2.0 POST table which references the glyphs as e.g. uni067C.med or uni067C.medi:
|
||||
e.g. XB Riyaz, XB Zar, Arabic Typesetting (MS), Arial (MS)
|
||||
|
||||
NB If you want to know if a font file is suitable, you can open a .ttf file in a text editor and search for "uni067C.med" - if it exists, it may work!
|
||||
Using "unAGlyphs" forces subsetting of fonts, and will not work with SIP/SMP fonts (using characters beyond the Unicode BMP Plane).
|
||||
|
||||
mPDF maps these characters to part of the Private Use Area allocated by Unicode U+F500-F7FF. This could interfere with correct use
|
||||
if the font already utilises these codes (unlikely).
|
||||
|
||||
mPDF now deletes U+200C,U+200D,U+200E,U+200F zero-widthjoiner/non-joiner, LTR and RTL marks so they will not appear
|
||||
even though some fonts contain glyphs for these characters.
|
||||
|
||||
|
||||
Other New features / Improvements
|
||||
---------------------------------
|
||||
Avoid just the border/background-color of the (empty) end of a block being moved on to next page (`</div></div>`)
|
||||
using configurable variable: `$this->margBuffer`;
|
||||
|
||||
|
||||
The TTFontsUni class contained a long function (extractcoreinfo) which is not used routinely in mPDF
|
||||
|
||||
This has been moved to a new file: classes/ttfontsuni_analysis.php.
|
||||
|
||||
The 3 utility scripts have been updated to use the new extended class:
|
||||
|
||||
- utils/font_collections.php
|
||||
- utils/font_coverage.php
|
||||
- utils/font_dump.php
|
||||
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
- Border & background when closing 2 blocks (e.g. `</div></div>`) incorrectly being moved to next page because incorrectly
|
||||
calculating how much space required
|
||||
- Fixed/Absolute-positioned elements not inheriting letter-spacing style
|
||||
- Rotated cell - error if text-rotate set on a table cell, but no text content in cell
|
||||
- SVG images, text-anchor not working
|
||||
- Nested table - not resetting cell style (font, color etc) after nested table, if text follows immediately
|
||||
- Nested table - font-size 70% set in extenal style sheet; if repeated nested tables, sets 70% of 70% etc etc
|
||||
- SVG setting font-size as percent on successive `<text>` elements gives progressively smaller text
|
||||
- mPDF will check if magic_quotes_runtime set ON even >= PHP 5.3 (will now cause an error message)
|
||||
- not resetting after 2 nested tags of same type e.g. `<b><b>bold</b></b>` still bold
|
||||
- When using charset_in other than utf-8, HTML Footers using tags e.g. `<htmlpageheader>` do not decode correctly
|
||||
- ToC if nested > 3 levels, line spacing reduces and starts to overlap
|
||||
|
||||
Older changes can be seen [on the documentation site](https://mpdf.github.io/about-mpdf/changelog.html).
|
||||
91
vendor/mpdf/mpdf/CREDITS.txt
vendored
Normal file
91
vendor/mpdf/mpdf/CREDITS.txt
vendored
Normal file
@ -0,0 +1,91 @@
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Software: FPDF *
|
||||
* Version: 1.53 *
|
||||
* Date: 2004-12-31 *
|
||||
* Author: Olivier PLATHEY *
|
||||
* License: Freeware *
|
||||
* *
|
||||
* You may use and modify this software as you wish. *
|
||||
*******************************************************************************/
|
||||
|
||||
/*******************************************************************************
|
||||
* HTML2FPDF is a php script to read a HTML text and generate a PDF file. *
|
||||
* Copyright (C) 2004-2005 Renato Coelho *
|
||||
* *
|
||||
* html2fpdf.php, htmltoolkit.php *
|
||||
*******************************************************************************/
|
||||
|
||||
CREDITS From HTML2FPDF:
|
||||
|
||||
-Olivier Plathey for the fpdf.php class [http://www.fpdf.org]
|
||||
-Damon Kohler for the Flowing Block script [mailto:damonkohler@yahoo.com]
|
||||
-Clément Lavoillotte for HTML-oriented FPDF idea
|
||||
-Yamasoft for the gif.php class [http://www.yamasoft.com/]
|
||||
-Jérôme Fenal for the _parsegif() function
|
||||
-"VIETCOM" for the PDFTable code [http://www.freepgs.com/vietcom/tool/pdftable/] [mailto:vncommando@yahoo.com]
|
||||
-Yukihiro O. for the SetDash() function [mailto:yukihiro_o@infoseek.jp]
|
||||
-Ron Korving for the WordWrap() function
|
||||
-Michel Poulain for the DisplayPreferences() function
|
||||
-Patrick Benny for the MultiCellBlt() function idea [no longer in use]
|
||||
-Seb for the _SetTextRendering() and SetTextOutline() functions [mailto:captainseb@wanadoo.fr]
|
||||
-MorphSoft for the colornames list idea
|
||||
-W3SCHOOLS for HTML-related reference info [http://www.w3schools.com/]
|
||||
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
* Software: FPDF_Protection *
|
||||
* Version: 1.02 *
|
||||
* Date: 2005/05/08 *
|
||||
* Author: Klemen VODOPIVEC *
|
||||
* License: Freeware *
|
||||
* *
|
||||
* You may use and modify this software as you wish as stated in original *
|
||||
* FPDF package. *
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
// FPDI - Version 1.2
|
||||
//
|
||||
// Copyright 2004-2007 Setasign - Jan Slabon
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* @copyright Khaled Al-Shamaa 2008
|
||||
* @link http://www.ar-php.org
|
||||
* @author Khaled Al-Shamaa <khaled@ar-php.org>
|
||||
* @desc Set of PHP5 / UTF-8 Classes developed to enhance Arabic web
|
||||
* applications by providing set of tools includes stem-based searching,
|
||||
* translitiration, soundex, Hijri calendar, charset detection and
|
||||
* converter, spell numbers, keyboard language, Muslim prayer time,
|
||||
* auto-summarization, and more...
|
||||
* @package Arabic
|
||||
*
|
||||
* @version 1.8 released in Feb 15, 2009
|
||||
*
|
||||
* @license LGPL
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation;
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
[http://www.opensource.org/licenses/lgpl-license.php]
|
||||
280
vendor/mpdf/mpdf/LICENSE.txt
vendored
Normal file
280
vendor/mpdf/mpdf/LICENSE.txt
vendored
Normal file
@ -0,0 +1,280 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Lesser General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
147
vendor/mpdf/mpdf/README.md
vendored
Normal file
147
vendor/mpdf/mpdf/README.md
vendored
Normal file
@ -0,0 +1,147 @@
|
||||
mPDF is a PHP library which generates PDF files from UTF-8 encoded HTML.
|
||||
|
||||
It is based on [FPDF](http://www.fpdf.org/) and [HTML2FPDF](http://html2fpdf.sourceforge.net/)
|
||||
(see [CREDITS](CREDITS.txt)), with a number of enhancements. mPDF was written by Ian Back and is released
|
||||
under the [GNU GPL v2 licence](LICENSE.txt).
|
||||
|
||||
[](https://packagist.org/packages/mpdf/mpdf)
|
||||
[](https://packagist.org/packages/mpdf/mpdf)
|
||||
[](https://packagist.org/packages/mpdf/mpdf)
|
||||
|
||||
|
||||
> ⚠ If you are viewing this file on mPDF GitHub repository homepage or on Packagist, please note that
|
||||
> the default repository branch is `development` which can differ from the last stable release.
|
||||
|
||||
Requirements
|
||||
============
|
||||
|
||||
PHP versions and extensions
|
||||
---------------------------
|
||||
|
||||
- `PHP >=5.6 <7.3.0` is supported for `mPDF >= 7.0`
|
||||
- `PHP 7.3` is supported since `mPDF v7.1.7`
|
||||
- `PHP 7.4` is supported since `mPDF v8.0.4`
|
||||
- `PHP 8.0` is supported since `mPDF v8.0.10`
|
||||
- `PHP 8.1` is supported as of `mPDF v8.0.13`
|
||||
- `PHP 8.2` is supported as of `mPDF v8.1.3`
|
||||
|
||||
PHP `mbstring` and `gd` extensions have to be loaded.
|
||||
|
||||
Additional extensions may be required for some advanced features such as `zlib` for compression of output and
|
||||
embedded resources such as fonts, `bcmath` for generating barcodes or `xml` for character set conversion
|
||||
and SVG handling.
|
||||
|
||||
Known server caveats
|
||||
--------------------
|
||||
|
||||
mPDF has some problems with fetching external HTTP resources with single threaded servers such as `php -S`. A proper
|
||||
server such as nginx (php-fpm) or Apache is recommended.
|
||||
|
||||
Support us
|
||||
==========
|
||||
|
||||
Consider supporting development of mPDF with a donation of any value. [Donation button][1] can be found on the
|
||||
[main page of the documentation][1].
|
||||
|
||||
Installation
|
||||
============
|
||||
|
||||
Official installation method is via composer and its packagist package [mpdf/mpdf](https://packagist.org/packages/mpdf/mpdf).
|
||||
|
||||
```
|
||||
$ composer require mpdf/mpdf
|
||||
```
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
||||
The simplest usage (since version 7.0) of the library would be as follows:
|
||||
|
||||
```php
|
||||
<?php
|
||||
|
||||
require_once __DIR__ . '/vendor/autoload.php';
|
||||
|
||||
$mpdf = new \Mpdf\Mpdf();
|
||||
$mpdf->WriteHTML('<h1>Hello world!</h1>');
|
||||
$mpdf->Output();
|
||||
|
||||
```
|
||||
|
||||
This will output the PDF inline to the browser as `application/pdf` Content-type.
|
||||
|
||||
Setup & Configuration
|
||||
=====================
|
||||
|
||||
All [configuration directives](https://mpdf.github.io/reference/mpdf-variables/overview.html) can
|
||||
be set by the `$config` parameter of the constructor.
|
||||
|
||||
It is recommended to set one's own temporary directory via `tempDir` configuration variable.
|
||||
The directory must have write permissions (mode `775` is recommended) for users using mPDF
|
||||
(typically `cli`, `webserver`, `fpm`).
|
||||
|
||||
**Warning:** mPDF will clean up old temporary files in the temporary directory. Choose a path dedicated to mPDF only.
|
||||
|
||||
|
||||
```php
|
||||
<?php
|
||||
|
||||
$mpdf = new \Mpdf\Mpdf(['tempDir' => __DIR__ . '/tmp']);
|
||||
|
||||
```
|
||||
|
||||
By default, the temporary directory will be inside vendor directory and will have write permissions from
|
||||
`post_install` composer script.
|
||||
|
||||
For more information about custom temporary directory see the note on
|
||||
[Folder for temporary files](https://mpdf.github.io/installation-setup/folders-for-temporary-files.html)
|
||||
in the section on Installation & Setup in the [manual][1].
|
||||
|
||||
If you have problems, please read the section on
|
||||
[troubleshooting](https://mpdf.github.io/troubleshooting/known-issues.html) in the manual.
|
||||
|
||||
About CSS support and development state
|
||||
=======================================
|
||||
|
||||
mPDF as a whole is a quite dated software. Nowadays, better alternatives are available, albeit not written in PHP.
|
||||
|
||||
Use mPDF if you cannot use non-PHP approach to generate PDF files or if you want to leverage some of the benefits of mPDF
|
||||
over browser approach – color handling, pre-print, barcodes support, headers and footers, page numbering, TOCs, etc.
|
||||
But beware that a HTML/CSS template tailored for mPDF might be necessary.
|
||||
|
||||
If you are looking for state of the art CSS support, mirroring existing HTML pages to PDF, use headless Chrome.
|
||||
|
||||
mPDF will still be updated to enhance some internal capabilities and to support newer versions of PHP,
|
||||
but better and/or newer CSS support will most likely not be implemented.
|
||||
|
||||
Online manual
|
||||
=============
|
||||
|
||||
Online manual is available at https://mpdf.github.io/.
|
||||
|
||||
General troubleshooting
|
||||
=============
|
||||
|
||||
For general questions or troubleshooting please use [Discussions](https://github.com/mpdf/mpdf/discussions).
|
||||
|
||||
You can also use the [mpdf tag](https://stackoverflow.com/questions/tagged/mpdf) at Stack Overflow as the StackOverflow user base is more likely to answer you in a timely manner.
|
||||
|
||||
Contributing
|
||||
============
|
||||
|
||||
Before submitting issues and pull requests please read the [CONTRIBUTING.md](https://github.com/mpdf/mpdf/blob/development/.github/CONTRIBUTING.md) file.
|
||||
|
||||
Unit Testing
|
||||
============
|
||||
|
||||
Unit testing for mPDF is done using [PHPUnit](https://phpunit.de/).
|
||||
|
||||
To get started, run `composer install` from the command line while in the mPDF root directory
|
||||
(you'll need [composer installed first](https://getcomposer.org/download/)).
|
||||
|
||||
To execute tests, run `composer test` from the command line while in the mPDF root directory.
|
||||
|
||||
Any assistance writing unit tests for mPDF is greatly appreciated. If you'd like to help, please
|
||||
note that any PHP file located in the `/tests/` directory will be autoloaded when unit testing.
|
||||
|
||||
[1]: https://mpdf.github.io
|
||||
74
vendor/mpdf/mpdf/composer.json
vendored
Normal file
74
vendor/mpdf/mpdf/composer.json
vendored
Normal file
@ -0,0 +1,74 @@
|
||||
{
|
||||
"name": "mpdf/mpdf",
|
||||
"type": "library",
|
||||
"description": "PHP library generating PDF files from UTF-8 encoded HTML",
|
||||
"keywords": ["php", "pdf", "utf-8"],
|
||||
"homepage": "https://mpdf.github.io",
|
||||
"license": ["GPL-2.0-only"],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Matěj Humpál",
|
||||
"role": "Developer, maintainer"
|
||||
},
|
||||
{
|
||||
"name": "Ian Back",
|
||||
"role": "Developer (retired)"
|
||||
}
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/mpdf/mpdf/issues",
|
||||
"source": "https://github.com/mpdf/mpdf",
|
||||
"docs": "http://mpdf.github.io"
|
||||
},
|
||||
"require": {
|
||||
"php": "^5.6 || ^7.0 || ~8.0.0 || ~8.1.0 || ~8.2.0",
|
||||
"ext-gd": "*",
|
||||
"ext-mbstring": "*",
|
||||
"mpdf/psr-http-message-shim": "^1.0 || ^2.0",
|
||||
"mpdf/psr-log-aware-trait": "^2.0 || ^3.0",
|
||||
"myclabs/deep-copy": "^1.7",
|
||||
"paragonie/random_compat": "^1.4|^2.0|^9.99.99",
|
||||
"psr/http-message": "^1.0 || ^2.0",
|
||||
"psr/log": "^1.0 || ^2.0 || ^3.0",
|
||||
"setasign/fpdi": "^2.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"mockery/mockery": "^1.3.0",
|
||||
"mpdf/qrcode": "^1.1.0",
|
||||
"squizlabs/php_codesniffer": "^3.5.0",
|
||||
"tracy/tracy": "~2.5",
|
||||
"yoast/phpunit-polyfills": "^1.0"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-bcmath": "Needed for generation of some types of barcodes",
|
||||
"ext-zlib": "Needed for compression of embedded resources, such as fonts",
|
||||
"ext-xml": "Needed mainly for SVG manipulation"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Mpdf\\": "src/"
|
||||
},
|
||||
"files": [
|
||||
"src/functions.php"
|
||||
]
|
||||
},
|
||||
"autoload-dev": {
|
||||
"psr-4": {
|
||||
"Mpdf\\": "tests/Mpdf"
|
||||
},
|
||||
"files": [
|
||||
"src/functions-dev.php"
|
||||
]
|
||||
},
|
||||
"scripts": {
|
||||
"post-install-cmd": [
|
||||
"php -r \"chmod('./tmp', 0777);\""
|
||||
],
|
||||
"cs": "@php vendor/bin/phpcs -v --report-width=160 --standard=ruleset.xml --severity=1 --warning-severity=0 --extensions=php src utils tests",
|
||||
"test": "@php vendor/bin/phpunit",
|
||||
"coverage": "@php vendor/bin/phpunit --coverage-text"
|
||||
},
|
||||
"config": {
|
||||
"sort-packages": true
|
||||
}
|
||||
}
|
||||
99
vendor/mpdf/mpdf/data/CJKdata.php
vendored
Normal file
99
vendor/mpdf/mpdf/data/CJKdata.php
vendored
Normal file
@ -0,0 +1,99 @@
|
||||
<?php
|
||||
// mPDF 2.5
|
||||
|
||||
// BIG 5
|
||||
$cw = array(
|
||||
32 => 250, 33 => 250, 34 => 408, 35 => 668, 36 => 490, 37 => 875, 38 => 698, 39 => 250, 40 => 240, 41 => 240,
|
||||
42 => 417, 43 => 667, 44 => 250, 45 => 313, 46 => 250, 47 => 520, 48 => 500, 49 => 500, 50 => 500, 51 => 500,
|
||||
52 => 500, 53 => 500, 54 => 500, 55 => 500, 56 => 500, 57 => 500, 58 => 250, 59 => 250, 60 => 667, 61 => 667,
|
||||
62 => 667, 63 => 396, 64 => 921, 65 => 677, 66 => 615, 67 => 719, 68 => 760, 69 => 625, 70 => 552, 71 => 771,
|
||||
72 => 802, 73 => 354, 74 => 354, 75 => 781, 76 => 604, 77 => 927, 78 => 750, 79 => 823, 80 => 563, 81 => 823,
|
||||
82 => 729, 83 => 542, 84 => 698, 85 => 771, 86 => 729, 87 => 948, 88 => 771, 89 => 677, 90 => 635, 91 => 344,
|
||||
92 => 520, 93 => 344, 94 => 469, 95 => 500, 96 => 250, 97 => 469, 98 => 521, 99 => 427, 100 => 521, 101 => 438,
|
||||
102 => 271, 103 => 469, 104 => 531, 105 => 250, 106 => 250, 107 => 458, 108 => 240, 109 => 802, 110 => 531, 111 => 500,
|
||||
112 => 521, 113 => 521, 114 => 365, 115 => 333, 116 => 292, 117 => 521, 118 => 458, 119 => 677, 120 => 479, 121 => 458,
|
||||
122 => 427, 123 => 480, 124 => 496, 125 => 480, 126 => 667,
|
||||
17601 => 500,
|
||||
);
|
||||
$this->Big5_widths=$cw;
|
||||
|
||||
|
||||
// GB
|
||||
$cw = array(
|
||||
32 => 207, 33 => 270, 34 => 342, 35 => 467, 36 => 462, 37 => 797, 38 => 710, 39 => 239, 40 => 374, 41 => 374,
|
||||
42 => 423, 43 => 605, 44 => 238, 45 => 375, 46 => 238, 47 => 334, 48 => 462, 49 => 462, 50 => 462, 51 => 462,
|
||||
52 => 462, 53 => 462, 54 => 462, 55 => 462, 56 => 462, 57 => 462, 58 => 238, 59 => 238, 60 => 605, 61 => 605,
|
||||
62 => 605, 63 => 344, 64 => 748, 65 => 684, 66 => 560, 67 => 695, 68 => 739, 69 => 563, 70 => 511, 71 => 729,
|
||||
72 => 793, 73 => 318, 74 => 312, 75 => 666, 76 => 526, 77 => 896, 78 => 758, 79 => 772, 80 => 544, 81 => 772,
|
||||
82 => 628, 83 => 465, 84 => 607, 85 => 753, 86 => 711, 87 => 972, 88 => 647, 89 => 620, 90 => 607, 91 => 374,
|
||||
92 => 333, 93 => 374, 94 => 606, 95 => 500, 96 => 239, 97 => 417, 98 => 503, 99 => 427, 100 => 529, 101 => 415,
|
||||
102 => 264, 103 => 444, 104 => 518, 105 => 241, 106 => 230, 107 => 495, 108 => 228, 109 => 793, 110 => 527, 111 => 524,
|
||||
112 => 524, 113 => 504, 114 => 338, 115 => 336, 116 => 277, 117 => 517, 118 => 450, 119 => 652, 120 => 466, 121 => 452,
|
||||
122 => 407, 123 => 370, 124 => 258, 125 => 370, 126 => 605,
|
||||
);
|
||||
$this->GB_widths=$cw;
|
||||
|
||||
// Japanese
|
||||
$cw = array(
|
||||
32 => 278, 33 => 299, 34 => 353, 35 => 614, 36 => 614, 37 => 721, 38 => 735, 39 => 216, 40 => 323, 41 => 323,
|
||||
42 => 449, 43 => 529, 44 => 219, 45 => 306, 46 => 219, 47 => 453, 48 => 614, 49 => 614, 50 => 614, 51 => 614,
|
||||
52 => 614, 53 => 614, 54 => 614, 55 => 614, 56 => 614, 57 => 614, 58 => 219, 59 => 219, 60 => 529, 61 => 529,
|
||||
62 => 529, 63 => 486, 64 => 744, 65 => 646, 66 => 604, 67 => 617, 68 => 681, 69 => 567, 70 => 537, 71 => 647,
|
||||
72 => 738, 73 => 320, 74 => 433, 75 => 637, 76 => 566, 77 => 904, 78 => 710, 79 => 716, 80 => 605, 81 => 716,
|
||||
82 => 623, 83 => 517, 84 => 601, 85 => 690, 86 => 668, 87 => 990, 88 => 681, 89 => 634, 90 => 578, 91 => 316,
|
||||
92 => 614, 93 => 316, 94 => 529, 95 => 500, 96 => 387, 97 => 509, 98 => 566, 99 => 478, 100 => 565, 101 => 503,
|
||||
102 => 337, 103 => 549, 104 => 580, 105 => 275, 106 => 266, 107 => 544, 108 => 276, 109 => 854, 110 => 579, 111 => 550,
|
||||
112 => 578, 113 => 566, 114 => 410, 115 => 444, 116 => 340, 117 => 575, 118 => 512, 119 => 760, 120 => 503, 121 => 529,
|
||||
122 => 453, 123 => 326, 124 => 380, 125 => 326, 126 => 387, 127 => 216, 128 => 453, 129 => 216, 130 => 380, 131 => 529,
|
||||
132 => 299, 133 => 614, 134 => 614, 135 => 265, 136 => 614, 137 => 475, 138 => 614, 139 => 353, 140 => 451, 141 => 291,
|
||||
142 => 291, 143 => 588, 144 => 589, 145 => 500, 146 => 476, 147 => 476, 148 => 219, 149 => 494, 150 => 452, 151 => 216,
|
||||
152 => 353, 153 => 353, 154 => 451, 156 => 1075, 157 => 486, 158 => 387, 159 => 387, 160 => 387, 161 => 387,
|
||||
162 => 387, 163 => 387, 164 => 387, 165 => 387, 166 => 387, 167 => 387, 168 => 387, 170 => 880, 171 => 448,
|
||||
172 => 566, 173 => 716, 174 => 903, 175 => 460, 176 => 805, 177 => 275, 178 => 276, 179 => 550, 180 => 886, 181 => 582,
|
||||
182 => 529, 183 => 738, 184 => 529, 185 => 738, 186 => 357, 187 => 529, 188 => 406, 189 => 406, 190 => 575, 191 => 406,
|
||||
192 => 934, 193 => 934, 194 => 934, 195 => 646, 196 => 646, 197 => 646, 198 => 646, 199 => 646, 200 => 646, 201 => 617,
|
||||
202 => 567, 203 => 567, 204 => 567, 205 => 567, 206 => 320, 207 => 320, 208 => 320, 209 => 320, 210 => 681, 211 => 710,
|
||||
212 => 716, 213 => 716, 214 => 716, 215 => 716, 216 => 716, 217 => 529, 218 => 690, 219 => 690, 220 => 690, 221 => 690,
|
||||
222 => 634, 223 => 605, 224 => 509, 225 => 509, 226 => 509, 227 => 509, 228 => 509, 229 => 509, 230 => 478, 231 => 503,
|
||||
232 => 503, 233 => 503, 234 => 503, 235 => 275, 236 => 275, 237 => 275, 238 => 275, 239 => 550, 240 => 579, 241 => 550,
|
||||
242 => 550, 243 => 550, 244 => 550, 245 => 550, 246 => 529, 247 => 575, 248 => 575, 249 => 575, 250 => 575, 251 => 529,
|
||||
252 => 578, 253 => 529, 254 => 517, 255 => 634, 256 => 578, 257 => 445, 258 => 444, 259 => 842, 260 => 453, 261 => 614,
|
||||
);
|
||||
|
||||
|
||||
$_cr = array(
|
||||
array(231, 632, 500), // half-width
|
||||
array(8718, 8718, 500),
|
||||
array(9738, 9757, 250), // quarter-width
|
||||
array(9758, 9778, 333), // third-width
|
||||
array(12063, 12087, 500),
|
||||
);
|
||||
foreach($_cr as $_r) {
|
||||
for($i = $_r[0]; $i <= $_r[1]; $i++) {
|
||||
$cw[$i+31] = $_r[2];
|
||||
}
|
||||
}
|
||||
$this->SJIS_widths=$cw;
|
||||
|
||||
// Korean
|
||||
$cw = array(
|
||||
32 => 333, 33 => 416, 34 => 416, 35 => 833, 36 => 625, 37 => 916, 38 => 833, 39 => 250, 40 => 500, 41 => 500,
|
||||
42 => 500, 43 => 833, 44 => 291, 45 => 450, 46 => 291, 47 => 375, 48 => 625, 49 => 625, 50 => 625, 51 => 625,
|
||||
52 => 625, 53 => 625, 54 => 625, 55 => 625, 56 => 625, 57 => 625, 58 => 333, 59 => 333, 60 => 833, 61 => 833,
|
||||
62 => 916, 63 => 500, 64 => 1000, 65 => 791, 66 => 708, 67 => 708, 68 => 750, 69 => 708, 70 => 666, 71 => 750,
|
||||
72 => 791, 73 => 375, 74 => 500, 75 => 791, 76 => 666, 77 => 916, 78 => 791, 79 => 750, 80 => 666, 81 => 750,
|
||||
82 => 708, 83 => 666, 84 => 791, 85 => 791, 86 => 750, 87 => 1000, 88 => 708, 89 => 708, 90 => 666, 91 => 500,
|
||||
92 => 375, 93 => 500, 94 => 500, 95 => 500, 96 => 333, 97 => 541, 98 => 583, 99 => 541, 100 => 583, 101 => 583,
|
||||
102 => 375, 103 => 583, 104 => 583, 105 => 291, 106 => 333, 107 => 583, 108 => 291, 109 => 875, 110 => 583, 111 => 583,
|
||||
112 => 583, 113 => 583, 114 => 458, 115 => 541, 116 => 375, 117 => 583, 118 => 583, 119 => 833, 120 => 625, 121 => 625,
|
||||
122 => 500, 123 => 583, 124 => 583, 125 => 583, 126 => 750,
|
||||
);
|
||||
$_cr = array(
|
||||
array(8094, 8190, 500)
|
||||
);
|
||||
foreach($_cr as $_r) {
|
||||
for($i = $_r[0]; $i <= $_r[1]; $i++) {
|
||||
$cw[$i+31] = $_r[2];
|
||||
}
|
||||
}
|
||||
$this->UHC_widths=$cw;
|
||||
104
vendor/mpdf/mpdf/data/collations/Afrikaans_South_Africa.php
vendored
Normal file
104
vendor/mpdf/mpdf/data/collations/Afrikaans_South_Africa.php
vendored
Normal file
@ -0,0 +1,104 @@
|
||||
<?php
|
||||
return [
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
170 => 97,
|
||||
225 => 97,
|
||||
193 => 97,
|
||||
224 => 97,
|
||||
192 => 97,
|
||||
226 => 97,
|
||||
194 => 97,
|
||||
228 => 97,
|
||||
196 => 97,
|
||||
227 => 97,
|
||||
195 => 97,
|
||||
229 => 97,
|
||||
197 => 97,
|
||||
230 => 97,
|
||||
198 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
199 => 99,
|
||||
68 => 100,
|
||||
240 => 100,
|
||||
208 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
201 => 101,
|
||||
232 => 101,
|
||||
200 => 101,
|
||||
234 => 101,
|
||||
202 => 101,
|
||||
235 => 101,
|
||||
203 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
237 => 105,
|
||||
205 => 105,
|
||||
236 => 105,
|
||||
204 => 105,
|
||||
238 => 105,
|
||||
206 => 105,
|
||||
239 => 105,
|
||||
207 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
241 => 110,
|
||||
209 => 110,
|
||||
79 => 111,
|
||||
186 => 111,
|
||||
243 => 111,
|
||||
211 => 111,
|
||||
242 => 111,
|
||||
210 => 111,
|
||||
244 => 111,
|
||||
212 => 111,
|
||||
246 => 111,
|
||||
214 => 111,
|
||||
245 => 111,
|
||||
213 => 111,
|
||||
248 => 111,
|
||||
216 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
353 => 115,
|
||||
352 => 115,
|
||||
223 => 115,
|
||||
84 => 116,
|
||||
254 => 116,
|
||||
222 => 116,
|
||||
85 => 117,
|
||||
250 => 117,
|
||||
218 => 117,
|
||||
249 => 117,
|
||||
217 => 117,
|
||||
251 => 117,
|
||||
219 => 117,
|
||||
252 => 117,
|
||||
220 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
253 => 121,
|
||||
221 => 121,
|
||||
255 => 121,
|
||||
376 => 121,
|
||||
90 => 122,
|
||||
382 => 122,
|
||||
381 => 122,
|
||||
];
|
||||
110
vendor/mpdf/mpdf/data/collations/Albanian_Albania.php
vendored
Normal file
110
vendor/mpdf/mpdf/data/collations/Albanian_Albania.php
vendored
Normal file
@ -0,0 +1,110 @@
|
||||
<?php
|
||||
return [
|
||||
728 => 711,
|
||||
65 => 97,
|
||||
225 => 97,
|
||||
193 => 97,
|
||||
226 => 97,
|
||||
194 => 97,
|
||||
228 => 97,
|
||||
196 => 97,
|
||||
259 => 97,
|
||||
258 => 97,
|
||||
261 => 97,
|
||||
260 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
263 => 99,
|
||||
262 => 99,
|
||||
269 => 99,
|
||||
268 => 99,
|
||||
231 => 99,
|
||||
199 => 99,
|
||||
68 => 100,
|
||||
271 => 100,
|
||||
270 => 100,
|
||||
273 => 100,
|
||||
272 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
201 => 101,
|
||||
235 => 101,
|
||||
203 => 101,
|
||||
283 => 101,
|
||||
282 => 101,
|
||||
281 => 101,
|
||||
280 => 101,
|
||||
70 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
237 => 105,
|
||||
205 => 105,
|
||||
238 => 105,
|
||||
206 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
314 => 108,
|
||||
313 => 108,
|
||||
318 => 108,
|
||||
317 => 108,
|
||||
322 => 108,
|
||||
321 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
324 => 110,
|
||||
323 => 110,
|
||||
328 => 110,
|
||||
327 => 110,
|
||||
79 => 111,
|
||||
243 => 111,
|
||||
211 => 111,
|
||||
244 => 111,
|
||||
212 => 111,
|
||||
246 => 111,
|
||||
214 => 111,
|
||||
337 => 111,
|
||||
336 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
341 => 114,
|
||||
340 => 114,
|
||||
345 => 114,
|
||||
344 => 114,
|
||||
83 => 115,
|
||||
347 => 115,
|
||||
346 => 115,
|
||||
353 => 115,
|
||||
352 => 115,
|
||||
351 => 115,
|
||||
350 => 115,
|
||||
223 => 115,
|
||||
84 => 116,
|
||||
357 => 116,
|
||||
356 => 116,
|
||||
355 => 116,
|
||||
354 => 116,
|
||||
85 => 117,
|
||||
250 => 117,
|
||||
218 => 117,
|
||||
367 => 117,
|
||||
366 => 117,
|
||||
369 => 117,
|
||||
368 => 117,
|
||||
252 => 117,
|
||||
220 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
221 => 253,
|
||||
89 => 121,
|
||||
90 => 122,
|
||||
378 => 122,
|
||||
377 => 122,
|
||||
380 => 122,
|
||||
379 => 122,
|
||||
382 => 122,
|
||||
381 => 122,
|
||||
];
|
||||
104
vendor/mpdf/mpdf/data/collations/Alsatian_France.php
vendored
Normal file
104
vendor/mpdf/mpdf/data/collations/Alsatian_France.php
vendored
Normal file
@ -0,0 +1,104 @@
|
||||
<?php
|
||||
return [
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
170 => 97,
|
||||
225 => 97,
|
||||
193 => 97,
|
||||
224 => 97,
|
||||
192 => 97,
|
||||
226 => 97,
|
||||
194 => 97,
|
||||
228 => 97,
|
||||
196 => 97,
|
||||
227 => 97,
|
||||
195 => 97,
|
||||
229 => 97,
|
||||
197 => 97,
|
||||
230 => 97,
|
||||
198 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
199 => 99,
|
||||
68 => 100,
|
||||
240 => 100,
|
||||
208 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
201 => 101,
|
||||
232 => 101,
|
||||
200 => 101,
|
||||
234 => 101,
|
||||
202 => 101,
|
||||
235 => 101,
|
||||
203 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
237 => 105,
|
||||
205 => 105,
|
||||
236 => 105,
|
||||
204 => 105,
|
||||
238 => 105,
|
||||
206 => 105,
|
||||
239 => 105,
|
||||
207 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
241 => 110,
|
||||
209 => 110,
|
||||
79 => 111,
|
||||
186 => 111,
|
||||
243 => 111,
|
||||
211 => 111,
|
||||
242 => 111,
|
||||
210 => 111,
|
||||
244 => 111,
|
||||
212 => 111,
|
||||
246 => 111,
|
||||
214 => 111,
|
||||
245 => 111,
|
||||
213 => 111,
|
||||
248 => 111,
|
||||
216 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
353 => 115,
|
||||
352 => 115,
|
||||
223 => 115,
|
||||
84 => 116,
|
||||
254 => 116,
|
||||
222 => 116,
|
||||
85 => 117,
|
||||
250 => 117,
|
||||
218 => 117,
|
||||
249 => 117,
|
||||
217 => 117,
|
||||
251 => 117,
|
||||
219 => 117,
|
||||
252 => 117,
|
||||
220 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
253 => 121,
|
||||
221 => 121,
|
||||
255 => 121,
|
||||
376 => 121,
|
||||
90 => 122,
|
||||
382 => 122,
|
||||
381 => 122,
|
||||
];
|
||||
67
vendor/mpdf/mpdf/data/collations/Arabic_Algeria.php
vendored
Normal file
67
vendor/mpdf/mpdf/data/collations/Arabic_Algeria.php
vendored
Normal file
@ -0,0 +1,67 @@
|
||||
<?php
|
||||
return [
|
||||
173 => 8205,
|
||||
1600 => 8205,
|
||||
1611 => 8205,
|
||||
1612 => 8205,
|
||||
1613 => 8205,
|
||||
1614 => 8205,
|
||||
1615 => 8205,
|
||||
1616 => 8205,
|
||||
1618 => 8205,
|
||||
1617 => 8205,
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
224 => 97,
|
||||
226 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
68 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
232 => 101,
|
||||
234 => 101,
|
||||
235 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
238 => 105,
|
||||
239 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
79 => 111,
|
||||
244 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
84 => 116,
|
||||
85 => 117,
|
||||
249 => 117,
|
||||
251 => 117,
|
||||
252 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
90 => 122,
|
||||
1573 => 1575,
|
||||
1571 => 1575,
|
||||
1570 => 1575,
|
||||
1606 => 1722,
|
||||
1729 => 1607,
|
||||
1726 => 1607,
|
||||
1572 => 1608,
|
||||
1746 => 1610,
|
||||
1574 => 1610,
|
||||
];
|
||||
67
vendor/mpdf/mpdf/data/collations/Arabic_Bahrain.php
vendored
Normal file
67
vendor/mpdf/mpdf/data/collations/Arabic_Bahrain.php
vendored
Normal file
@ -0,0 +1,67 @@
|
||||
<?php
|
||||
return [
|
||||
173 => 8205,
|
||||
1600 => 8205,
|
||||
1611 => 8205,
|
||||
1612 => 8205,
|
||||
1613 => 8205,
|
||||
1614 => 8205,
|
||||
1615 => 8205,
|
||||
1616 => 8205,
|
||||
1618 => 8205,
|
||||
1617 => 8205,
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
224 => 97,
|
||||
226 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
68 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
232 => 101,
|
||||
234 => 101,
|
||||
235 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
238 => 105,
|
||||
239 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
79 => 111,
|
||||
244 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
84 => 116,
|
||||
85 => 117,
|
||||
249 => 117,
|
||||
251 => 117,
|
||||
252 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
90 => 122,
|
||||
1573 => 1575,
|
||||
1571 => 1575,
|
||||
1570 => 1575,
|
||||
1606 => 1722,
|
||||
1729 => 1607,
|
||||
1726 => 1607,
|
||||
1572 => 1608,
|
||||
1746 => 1610,
|
||||
1574 => 1610,
|
||||
];
|
||||
67
vendor/mpdf/mpdf/data/collations/Arabic_Egypt.php
vendored
Normal file
67
vendor/mpdf/mpdf/data/collations/Arabic_Egypt.php
vendored
Normal file
@ -0,0 +1,67 @@
|
||||
<?php
|
||||
return [
|
||||
173 => 8205,
|
||||
1600 => 8205,
|
||||
1611 => 8205,
|
||||
1612 => 8205,
|
||||
1613 => 8205,
|
||||
1614 => 8205,
|
||||
1615 => 8205,
|
||||
1616 => 8205,
|
||||
1618 => 8205,
|
||||
1617 => 8205,
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
224 => 97,
|
||||
226 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
68 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
232 => 101,
|
||||
234 => 101,
|
||||
235 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
238 => 105,
|
||||
239 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
79 => 111,
|
||||
244 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
84 => 116,
|
||||
85 => 117,
|
||||
249 => 117,
|
||||
251 => 117,
|
||||
252 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
90 => 122,
|
||||
1573 => 1575,
|
||||
1571 => 1575,
|
||||
1570 => 1575,
|
||||
1606 => 1722,
|
||||
1729 => 1607,
|
||||
1726 => 1607,
|
||||
1572 => 1608,
|
||||
1746 => 1610,
|
||||
1574 => 1610,
|
||||
];
|
||||
67
vendor/mpdf/mpdf/data/collations/Arabic_Iraq.php
vendored
Normal file
67
vendor/mpdf/mpdf/data/collations/Arabic_Iraq.php
vendored
Normal file
@ -0,0 +1,67 @@
|
||||
<?php
|
||||
return [
|
||||
173 => 8205,
|
||||
1600 => 8205,
|
||||
1611 => 8205,
|
||||
1612 => 8205,
|
||||
1613 => 8205,
|
||||
1614 => 8205,
|
||||
1615 => 8205,
|
||||
1616 => 8205,
|
||||
1618 => 8205,
|
||||
1617 => 8205,
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
224 => 97,
|
||||
226 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
68 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
232 => 101,
|
||||
234 => 101,
|
||||
235 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
238 => 105,
|
||||
239 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
79 => 111,
|
||||
244 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
84 => 116,
|
||||
85 => 117,
|
||||
249 => 117,
|
||||
251 => 117,
|
||||
252 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
90 => 122,
|
||||
1573 => 1575,
|
||||
1571 => 1575,
|
||||
1570 => 1575,
|
||||
1606 => 1722,
|
||||
1729 => 1607,
|
||||
1726 => 1607,
|
||||
1572 => 1608,
|
||||
1746 => 1610,
|
||||
1574 => 1610,
|
||||
];
|
||||
67
vendor/mpdf/mpdf/data/collations/Arabic_Jordan.php
vendored
Normal file
67
vendor/mpdf/mpdf/data/collations/Arabic_Jordan.php
vendored
Normal file
@ -0,0 +1,67 @@
|
||||
<?php
|
||||
return [
|
||||
173 => 8205,
|
||||
1600 => 8205,
|
||||
1611 => 8205,
|
||||
1612 => 8205,
|
||||
1613 => 8205,
|
||||
1614 => 8205,
|
||||
1615 => 8205,
|
||||
1616 => 8205,
|
||||
1618 => 8205,
|
||||
1617 => 8205,
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
224 => 97,
|
||||
226 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
68 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
232 => 101,
|
||||
234 => 101,
|
||||
235 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
238 => 105,
|
||||
239 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
79 => 111,
|
||||
244 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
84 => 116,
|
||||
85 => 117,
|
||||
249 => 117,
|
||||
251 => 117,
|
||||
252 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
90 => 122,
|
||||
1573 => 1575,
|
||||
1571 => 1575,
|
||||
1570 => 1575,
|
||||
1606 => 1722,
|
||||
1729 => 1607,
|
||||
1726 => 1607,
|
||||
1572 => 1608,
|
||||
1746 => 1610,
|
||||
1574 => 1610,
|
||||
];
|
||||
67
vendor/mpdf/mpdf/data/collations/Arabic_Kuwait.php
vendored
Normal file
67
vendor/mpdf/mpdf/data/collations/Arabic_Kuwait.php
vendored
Normal file
@ -0,0 +1,67 @@
|
||||
<?php
|
||||
return [
|
||||
173 => 8205,
|
||||
1600 => 8205,
|
||||
1611 => 8205,
|
||||
1612 => 8205,
|
||||
1613 => 8205,
|
||||
1614 => 8205,
|
||||
1615 => 8205,
|
||||
1616 => 8205,
|
||||
1618 => 8205,
|
||||
1617 => 8205,
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
224 => 97,
|
||||
226 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
68 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
232 => 101,
|
||||
234 => 101,
|
||||
235 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
238 => 105,
|
||||
239 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
79 => 111,
|
||||
244 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
84 => 116,
|
||||
85 => 117,
|
||||
249 => 117,
|
||||
251 => 117,
|
||||
252 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
90 => 122,
|
||||
1573 => 1575,
|
||||
1571 => 1575,
|
||||
1570 => 1575,
|
||||
1606 => 1722,
|
||||
1729 => 1607,
|
||||
1726 => 1607,
|
||||
1572 => 1608,
|
||||
1746 => 1610,
|
||||
1574 => 1610,
|
||||
];
|
||||
67
vendor/mpdf/mpdf/data/collations/Arabic_Lebanon.php
vendored
Normal file
67
vendor/mpdf/mpdf/data/collations/Arabic_Lebanon.php
vendored
Normal file
@ -0,0 +1,67 @@
|
||||
<?php
|
||||
return [
|
||||
173 => 8205,
|
||||
1600 => 8205,
|
||||
1611 => 8205,
|
||||
1612 => 8205,
|
||||
1613 => 8205,
|
||||
1614 => 8205,
|
||||
1615 => 8205,
|
||||
1616 => 8205,
|
||||
1618 => 8205,
|
||||
1617 => 8205,
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
224 => 97,
|
||||
226 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
68 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
232 => 101,
|
||||
234 => 101,
|
||||
235 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
238 => 105,
|
||||
239 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
79 => 111,
|
||||
244 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
84 => 116,
|
||||
85 => 117,
|
||||
249 => 117,
|
||||
251 => 117,
|
||||
252 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
90 => 122,
|
||||
1573 => 1575,
|
||||
1571 => 1575,
|
||||
1570 => 1575,
|
||||
1606 => 1722,
|
||||
1729 => 1607,
|
||||
1726 => 1607,
|
||||
1572 => 1608,
|
||||
1746 => 1610,
|
||||
1574 => 1610,
|
||||
];
|
||||
67
vendor/mpdf/mpdf/data/collations/Arabic_Libya.php
vendored
Normal file
67
vendor/mpdf/mpdf/data/collations/Arabic_Libya.php
vendored
Normal file
@ -0,0 +1,67 @@
|
||||
<?php
|
||||
return [
|
||||
173 => 8205,
|
||||
1600 => 8205,
|
||||
1611 => 8205,
|
||||
1612 => 8205,
|
||||
1613 => 8205,
|
||||
1614 => 8205,
|
||||
1615 => 8205,
|
||||
1616 => 8205,
|
||||
1618 => 8205,
|
||||
1617 => 8205,
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
224 => 97,
|
||||
226 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
68 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
232 => 101,
|
||||
234 => 101,
|
||||
235 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
238 => 105,
|
||||
239 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
79 => 111,
|
||||
244 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
84 => 116,
|
||||
85 => 117,
|
||||
249 => 117,
|
||||
251 => 117,
|
||||
252 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
90 => 122,
|
||||
1573 => 1575,
|
||||
1571 => 1575,
|
||||
1570 => 1575,
|
||||
1606 => 1722,
|
||||
1729 => 1607,
|
||||
1726 => 1607,
|
||||
1572 => 1608,
|
||||
1746 => 1610,
|
||||
1574 => 1610,
|
||||
];
|
||||
67
vendor/mpdf/mpdf/data/collations/Arabic_Morocco.php
vendored
Normal file
67
vendor/mpdf/mpdf/data/collations/Arabic_Morocco.php
vendored
Normal file
@ -0,0 +1,67 @@
|
||||
<?php
|
||||
return [
|
||||
173 => 8205,
|
||||
1600 => 8205,
|
||||
1611 => 8205,
|
||||
1612 => 8205,
|
||||
1613 => 8205,
|
||||
1614 => 8205,
|
||||
1615 => 8205,
|
||||
1616 => 8205,
|
||||
1618 => 8205,
|
||||
1617 => 8205,
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
224 => 97,
|
||||
226 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
68 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
232 => 101,
|
||||
234 => 101,
|
||||
235 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
238 => 105,
|
||||
239 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
79 => 111,
|
||||
244 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
84 => 116,
|
||||
85 => 117,
|
||||
249 => 117,
|
||||
251 => 117,
|
||||
252 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
90 => 122,
|
||||
1573 => 1575,
|
||||
1571 => 1575,
|
||||
1570 => 1575,
|
||||
1606 => 1722,
|
||||
1729 => 1607,
|
||||
1726 => 1607,
|
||||
1572 => 1608,
|
||||
1746 => 1610,
|
||||
1574 => 1610,
|
||||
];
|
||||
67
vendor/mpdf/mpdf/data/collations/Arabic_Oman.php
vendored
Normal file
67
vendor/mpdf/mpdf/data/collations/Arabic_Oman.php
vendored
Normal file
@ -0,0 +1,67 @@
|
||||
<?php
|
||||
return [
|
||||
173 => 8205,
|
||||
1600 => 8205,
|
||||
1611 => 8205,
|
||||
1612 => 8205,
|
||||
1613 => 8205,
|
||||
1614 => 8205,
|
||||
1615 => 8205,
|
||||
1616 => 8205,
|
||||
1618 => 8205,
|
||||
1617 => 8205,
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
224 => 97,
|
||||
226 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
68 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
232 => 101,
|
||||
234 => 101,
|
||||
235 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
238 => 105,
|
||||
239 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
79 => 111,
|
||||
244 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
84 => 116,
|
||||
85 => 117,
|
||||
249 => 117,
|
||||
251 => 117,
|
||||
252 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
90 => 122,
|
||||
1573 => 1575,
|
||||
1571 => 1575,
|
||||
1570 => 1575,
|
||||
1606 => 1722,
|
||||
1729 => 1607,
|
||||
1726 => 1607,
|
||||
1572 => 1608,
|
||||
1746 => 1610,
|
||||
1574 => 1610,
|
||||
];
|
||||
67
vendor/mpdf/mpdf/data/collations/Arabic_Pseudo_RTL.php
vendored
Normal file
67
vendor/mpdf/mpdf/data/collations/Arabic_Pseudo_RTL.php
vendored
Normal file
@ -0,0 +1,67 @@
|
||||
<?php
|
||||
return [
|
||||
173 => 8205,
|
||||
1600 => 8205,
|
||||
1611 => 8205,
|
||||
1612 => 8205,
|
||||
1613 => 8205,
|
||||
1614 => 8205,
|
||||
1615 => 8205,
|
||||
1616 => 8205,
|
||||
1618 => 8205,
|
||||
1617 => 8205,
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
224 => 97,
|
||||
226 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
68 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
232 => 101,
|
||||
234 => 101,
|
||||
235 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
238 => 105,
|
||||
239 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
79 => 111,
|
||||
244 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
84 => 116,
|
||||
85 => 117,
|
||||
249 => 117,
|
||||
251 => 117,
|
||||
252 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
90 => 122,
|
||||
1573 => 1575,
|
||||
1571 => 1575,
|
||||
1570 => 1575,
|
||||
1606 => 1722,
|
||||
1729 => 1607,
|
||||
1726 => 1607,
|
||||
1572 => 1608,
|
||||
1746 => 1610,
|
||||
1574 => 1610,
|
||||
];
|
||||
67
vendor/mpdf/mpdf/data/collations/Arabic_Qatar.php
vendored
Normal file
67
vendor/mpdf/mpdf/data/collations/Arabic_Qatar.php
vendored
Normal file
@ -0,0 +1,67 @@
|
||||
<?php
|
||||
return [
|
||||
173 => 8205,
|
||||
1600 => 8205,
|
||||
1611 => 8205,
|
||||
1612 => 8205,
|
||||
1613 => 8205,
|
||||
1614 => 8205,
|
||||
1615 => 8205,
|
||||
1616 => 8205,
|
||||
1618 => 8205,
|
||||
1617 => 8205,
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
224 => 97,
|
||||
226 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
68 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
232 => 101,
|
||||
234 => 101,
|
||||
235 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
238 => 105,
|
||||
239 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
79 => 111,
|
||||
244 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
84 => 116,
|
||||
85 => 117,
|
||||
249 => 117,
|
||||
251 => 117,
|
||||
252 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
90 => 122,
|
||||
1573 => 1575,
|
||||
1571 => 1575,
|
||||
1570 => 1575,
|
||||
1606 => 1722,
|
||||
1729 => 1607,
|
||||
1726 => 1607,
|
||||
1572 => 1608,
|
||||
1746 => 1610,
|
||||
1574 => 1610,
|
||||
];
|
||||
67
vendor/mpdf/mpdf/data/collations/Arabic_Saudi_Arabia.php
vendored
Normal file
67
vendor/mpdf/mpdf/data/collations/Arabic_Saudi_Arabia.php
vendored
Normal file
@ -0,0 +1,67 @@
|
||||
<?php
|
||||
return [
|
||||
173 => 8205,
|
||||
1600 => 8205,
|
||||
1611 => 8205,
|
||||
1612 => 8205,
|
||||
1613 => 8205,
|
||||
1614 => 8205,
|
||||
1615 => 8205,
|
||||
1616 => 8205,
|
||||
1618 => 8205,
|
||||
1617 => 8205,
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
224 => 97,
|
||||
226 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
68 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
232 => 101,
|
||||
234 => 101,
|
||||
235 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
238 => 105,
|
||||
239 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
79 => 111,
|
||||
244 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
84 => 116,
|
||||
85 => 117,
|
||||
249 => 117,
|
||||
251 => 117,
|
||||
252 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
90 => 122,
|
||||
1573 => 1575,
|
||||
1571 => 1575,
|
||||
1570 => 1575,
|
||||
1606 => 1722,
|
||||
1729 => 1607,
|
||||
1726 => 1607,
|
||||
1572 => 1608,
|
||||
1746 => 1610,
|
||||
1574 => 1610,
|
||||
];
|
||||
67
vendor/mpdf/mpdf/data/collations/Arabic_Syria.php
vendored
Normal file
67
vendor/mpdf/mpdf/data/collations/Arabic_Syria.php
vendored
Normal file
@ -0,0 +1,67 @@
|
||||
<?php
|
||||
return [
|
||||
173 => 8205,
|
||||
1600 => 8205,
|
||||
1611 => 8205,
|
||||
1612 => 8205,
|
||||
1613 => 8205,
|
||||
1614 => 8205,
|
||||
1615 => 8205,
|
||||
1616 => 8205,
|
||||
1618 => 8205,
|
||||
1617 => 8205,
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
224 => 97,
|
||||
226 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
68 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
232 => 101,
|
||||
234 => 101,
|
||||
235 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
238 => 105,
|
||||
239 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
79 => 111,
|
||||
244 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
84 => 116,
|
||||
85 => 117,
|
||||
249 => 117,
|
||||
251 => 117,
|
||||
252 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
90 => 122,
|
||||
1573 => 1575,
|
||||
1571 => 1575,
|
||||
1570 => 1575,
|
||||
1606 => 1722,
|
||||
1729 => 1607,
|
||||
1726 => 1607,
|
||||
1572 => 1608,
|
||||
1746 => 1610,
|
||||
1574 => 1610,
|
||||
];
|
||||
67
vendor/mpdf/mpdf/data/collations/Arabic_Tunisia.php
vendored
Normal file
67
vendor/mpdf/mpdf/data/collations/Arabic_Tunisia.php
vendored
Normal file
@ -0,0 +1,67 @@
|
||||
<?php
|
||||
return [
|
||||
173 => 8205,
|
||||
1600 => 8205,
|
||||
1611 => 8205,
|
||||
1612 => 8205,
|
||||
1613 => 8205,
|
||||
1614 => 8205,
|
||||
1615 => 8205,
|
||||
1616 => 8205,
|
||||
1618 => 8205,
|
||||
1617 => 8205,
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
224 => 97,
|
||||
226 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
68 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
232 => 101,
|
||||
234 => 101,
|
||||
235 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
238 => 105,
|
||||
239 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
79 => 111,
|
||||
244 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
84 => 116,
|
||||
85 => 117,
|
||||
249 => 117,
|
||||
251 => 117,
|
||||
252 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
90 => 122,
|
||||
1573 => 1575,
|
||||
1571 => 1575,
|
||||
1570 => 1575,
|
||||
1606 => 1722,
|
||||
1729 => 1607,
|
||||
1726 => 1607,
|
||||
1572 => 1608,
|
||||
1746 => 1610,
|
||||
1574 => 1610,
|
||||
];
|
||||
67
vendor/mpdf/mpdf/data/collations/Arabic_Yemen.php
vendored
Normal file
67
vendor/mpdf/mpdf/data/collations/Arabic_Yemen.php
vendored
Normal file
@ -0,0 +1,67 @@
|
||||
<?php
|
||||
return [
|
||||
173 => 8205,
|
||||
1600 => 8205,
|
||||
1611 => 8205,
|
||||
1612 => 8205,
|
||||
1613 => 8205,
|
||||
1614 => 8205,
|
||||
1615 => 8205,
|
||||
1616 => 8205,
|
||||
1618 => 8205,
|
||||
1617 => 8205,
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
224 => 97,
|
||||
226 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
68 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
232 => 101,
|
||||
234 => 101,
|
||||
235 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
238 => 105,
|
||||
239 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
79 => 111,
|
||||
244 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
84 => 116,
|
||||
85 => 117,
|
||||
249 => 117,
|
||||
251 => 117,
|
||||
252 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
90 => 122,
|
||||
1573 => 1575,
|
||||
1571 => 1575,
|
||||
1570 => 1575,
|
||||
1606 => 1722,
|
||||
1729 => 1607,
|
||||
1726 => 1607,
|
||||
1572 => 1608,
|
||||
1746 => 1610,
|
||||
1574 => 1610,
|
||||
];
|
||||
79
vendor/mpdf/mpdf/data/collations/Azeri_(Cyrillic)_Azerbaijan.php
vendored
Normal file
79
vendor/mpdf/mpdf/data/collations/Azeri_(Cyrillic)_Azerbaijan.php
vendored
Normal file
@ -0,0 +1,79 @@
|
||||
<?php
|
||||
return [
|
||||
65 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
68 => 100,
|
||||
69 => 101,
|
||||
70 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
88 => 120,
|
||||
73 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
81 => 113,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
79 => 111,
|
||||
80 => 112,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
84 => 116,
|
||||
85 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
89 => 121,
|
||||
90 => 122,
|
||||
1040 => 1072,
|
||||
1041 => 1073,
|
||||
1042 => 1074,
|
||||
1043 => 1075,
|
||||
1107 => 1075,
|
||||
1027 => 1075,
|
||||
1168 => 1169,
|
||||
1044 => 1076,
|
||||
1026 => 1106,
|
||||
1045 => 1077,
|
||||
1105 => 1077,
|
||||
1025 => 1077,
|
||||
1028 => 1108,
|
||||
1046 => 1078,
|
||||
1047 => 1079,
|
||||
1029 => 1109,
|
||||
1048 => 1080,
|
||||
1031 => 1111,
|
||||
1049 => 1081,
|
||||
1032 => 1112,
|
||||
1050 => 1082,
|
||||
1116 => 1082,
|
||||
1036 => 1082,
|
||||
1067 => 1099,
|
||||
1051 => 1083,
|
||||
1033 => 1113,
|
||||
1052 => 1084,
|
||||
1053 => 1085,
|
||||
1034 => 1114,
|
||||
1054 => 1086,
|
||||
1055 => 1087,
|
||||
1056 => 1088,
|
||||
1057 => 1089,
|
||||
1058 => 1090,
|
||||
1035 => 1115,
|
||||
1059 => 1091,
|
||||
1118 => 1091,
|
||||
1038 => 1091,
|
||||
1060 => 1092,
|
||||
1061 => 1093,
|
||||
1062 => 1094,
|
||||
1063 => 1095,
|
||||
1039 => 1119,
|
||||
1064 => 1096,
|
||||
1065 => 1097,
|
||||
1066 => 1098,
|
||||
1068 => 1100,
|
||||
1069 => 1101,
|
||||
1070 => 1102,
|
||||
1071 => 1103,
|
||||
];
|
||||
97
vendor/mpdf/mpdf/data/collations/Azeri_(Latin)_Azerbaijan.php
vendored
Normal file
97
vendor/mpdf/mpdf/data/collations/Azeri_(Latin)_Azerbaijan.php
vendored
Normal file
@ -0,0 +1,97 @@
|
||||
<?php
|
||||
return [
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
170 => 97,
|
||||
225 => 97,
|
||||
193 => 97,
|
||||
224 => 97,
|
||||
192 => 97,
|
||||
226 => 97,
|
||||
194 => 97,
|
||||
228 => 97,
|
||||
196 => 97,
|
||||
227 => 97,
|
||||
195 => 97,
|
||||
229 => 97,
|
||||
197 => 97,
|
||||
230 => 97,
|
||||
198 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
199 => 231,
|
||||
68 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
201 => 101,
|
||||
232 => 101,
|
||||
200 => 101,
|
||||
234 => 101,
|
||||
202 => 101,
|
||||
235 => 101,
|
||||
203 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
286 => 287,
|
||||
72 => 104,
|
||||
88 => 120,
|
||||
73 => 105,
|
||||
305 => 105,
|
||||
237 => 105,
|
||||
205 => 105,
|
||||
236 => 105,
|
||||
204 => 105,
|
||||
304 => 105,
|
||||
238 => 105,
|
||||
206 => 105,
|
||||
239 => 105,
|
||||
207 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
81 => 113,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
241 => 110,
|
||||
209 => 110,
|
||||
79 => 111,
|
||||
186 => 111,
|
||||
243 => 111,
|
||||
211 => 111,
|
||||
242 => 111,
|
||||
210 => 111,
|
||||
244 => 111,
|
||||
212 => 111,
|
||||
245 => 111,
|
||||
213 => 111,
|
||||
248 => 111,
|
||||
216 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
214 => 246,
|
||||
80 => 112,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
353 => 115,
|
||||
352 => 115,
|
||||
223 => 115,
|
||||
350 => 351,
|
||||
84 => 116,
|
||||
85 => 117,
|
||||
250 => 117,
|
||||
218 => 117,
|
||||
249 => 117,
|
||||
217 => 117,
|
||||
251 => 117,
|
||||
219 => 117,
|
||||
220 => 252,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
89 => 121,
|
||||
255 => 121,
|
||||
376 => 121,
|
||||
90 => 122,
|
||||
];
|
||||
79
vendor/mpdf/mpdf/data/collations/Bashkir_Russia.php
vendored
Normal file
79
vendor/mpdf/mpdf/data/collations/Bashkir_Russia.php
vendored
Normal file
@ -0,0 +1,79 @@
|
||||
<?php
|
||||
return [
|
||||
65 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
68 => 100,
|
||||
69 => 101,
|
||||
70 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
79 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
84 => 116,
|
||||
85 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
90 => 122,
|
||||
1040 => 1072,
|
||||
1041 => 1073,
|
||||
1042 => 1074,
|
||||
1043 => 1075,
|
||||
1107 => 1075,
|
||||
1027 => 1075,
|
||||
1168 => 1169,
|
||||
1044 => 1076,
|
||||
1026 => 1106,
|
||||
1045 => 1077,
|
||||
1105 => 1077,
|
||||
1025 => 1077,
|
||||
1028 => 1108,
|
||||
1046 => 1078,
|
||||
1047 => 1079,
|
||||
1029 => 1109,
|
||||
1048 => 1080,
|
||||
1031 => 1111,
|
||||
1049 => 1081,
|
||||
1032 => 1112,
|
||||
1050 => 1082,
|
||||
1116 => 1082,
|
||||
1036 => 1082,
|
||||
1051 => 1083,
|
||||
1033 => 1113,
|
||||
1052 => 1084,
|
||||
1053 => 1085,
|
||||
1034 => 1114,
|
||||
1054 => 1086,
|
||||
1055 => 1087,
|
||||
1056 => 1088,
|
||||
1057 => 1089,
|
||||
1058 => 1090,
|
||||
1035 => 1115,
|
||||
1059 => 1091,
|
||||
1118 => 1091,
|
||||
1038 => 1091,
|
||||
1060 => 1092,
|
||||
1061 => 1093,
|
||||
1062 => 1094,
|
||||
1063 => 1095,
|
||||
1039 => 1119,
|
||||
1064 => 1096,
|
||||
1065 => 1097,
|
||||
1066 => 1098,
|
||||
1067 => 1099,
|
||||
1068 => 1100,
|
||||
1069 => 1101,
|
||||
1070 => 1102,
|
||||
1071 => 1103,
|
||||
];
|
||||
104
vendor/mpdf/mpdf/data/collations/Basque_Spain.php
vendored
Normal file
104
vendor/mpdf/mpdf/data/collations/Basque_Spain.php
vendored
Normal file
@ -0,0 +1,104 @@
|
||||
<?php
|
||||
return [
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
170 => 97,
|
||||
225 => 97,
|
||||
193 => 97,
|
||||
224 => 97,
|
||||
192 => 97,
|
||||
226 => 97,
|
||||
194 => 97,
|
||||
228 => 97,
|
||||
196 => 97,
|
||||
227 => 97,
|
||||
195 => 97,
|
||||
229 => 97,
|
||||
197 => 97,
|
||||
230 => 97,
|
||||
198 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
199 => 99,
|
||||
68 => 100,
|
||||
240 => 100,
|
||||
208 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
201 => 101,
|
||||
232 => 101,
|
||||
200 => 101,
|
||||
234 => 101,
|
||||
202 => 101,
|
||||
235 => 101,
|
||||
203 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
237 => 105,
|
||||
205 => 105,
|
||||
236 => 105,
|
||||
204 => 105,
|
||||
238 => 105,
|
||||
206 => 105,
|
||||
239 => 105,
|
||||
207 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
241 => 110,
|
||||
209 => 110,
|
||||
79 => 111,
|
||||
186 => 111,
|
||||
243 => 111,
|
||||
211 => 111,
|
||||
242 => 111,
|
||||
210 => 111,
|
||||
244 => 111,
|
||||
212 => 111,
|
||||
246 => 111,
|
||||
214 => 111,
|
||||
245 => 111,
|
||||
213 => 111,
|
||||
248 => 111,
|
||||
216 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
353 => 115,
|
||||
352 => 115,
|
||||
223 => 115,
|
||||
84 => 116,
|
||||
254 => 116,
|
||||
222 => 116,
|
||||
85 => 117,
|
||||
250 => 117,
|
||||
218 => 117,
|
||||
249 => 117,
|
||||
217 => 117,
|
||||
251 => 117,
|
||||
219 => 117,
|
||||
252 => 117,
|
||||
220 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
253 => 121,
|
||||
221 => 121,
|
||||
255 => 121,
|
||||
376 => 121,
|
||||
90 => 122,
|
||||
382 => 122,
|
||||
381 => 122,
|
||||
];
|
||||
79
vendor/mpdf/mpdf/data/collations/Belarusian_Belarus.php
vendored
Normal file
79
vendor/mpdf/mpdf/data/collations/Belarusian_Belarus.php
vendored
Normal file
@ -0,0 +1,79 @@
|
||||
<?php
|
||||
return [
|
||||
65 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
68 => 100,
|
||||
69 => 101,
|
||||
70 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
79 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
84 => 116,
|
||||
85 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
90 => 122,
|
||||
1040 => 1072,
|
||||
1041 => 1073,
|
||||
1042 => 1074,
|
||||
1043 => 1075,
|
||||
1107 => 1075,
|
||||
1027 => 1075,
|
||||
1168 => 1169,
|
||||
1044 => 1076,
|
||||
1026 => 1106,
|
||||
1045 => 1077,
|
||||
1105 => 1077,
|
||||
1025 => 1077,
|
||||
1028 => 1108,
|
||||
1046 => 1078,
|
||||
1047 => 1079,
|
||||
1029 => 1109,
|
||||
1048 => 1080,
|
||||
1031 => 1111,
|
||||
1049 => 1081,
|
||||
1032 => 1112,
|
||||
1050 => 1082,
|
||||
1116 => 1082,
|
||||
1036 => 1082,
|
||||
1051 => 1083,
|
||||
1033 => 1113,
|
||||
1052 => 1084,
|
||||
1053 => 1085,
|
||||
1034 => 1114,
|
||||
1054 => 1086,
|
||||
1055 => 1087,
|
||||
1056 => 1088,
|
||||
1057 => 1089,
|
||||
1058 => 1090,
|
||||
1035 => 1115,
|
||||
1059 => 1091,
|
||||
1118 => 1091,
|
||||
1038 => 1091,
|
||||
1060 => 1092,
|
||||
1061 => 1093,
|
||||
1062 => 1094,
|
||||
1063 => 1095,
|
||||
1039 => 1119,
|
||||
1064 => 1096,
|
||||
1065 => 1097,
|
||||
1066 => 1098,
|
||||
1067 => 1099,
|
||||
1068 => 1100,
|
||||
1069 => 1101,
|
||||
1070 => 1102,
|
||||
1071 => 1103,
|
||||
];
|
||||
79
vendor/mpdf/mpdf/data/collations/Bosnian_(Cyrillic)_Bosnia_and_Herzegovina.php
vendored
Normal file
79
vendor/mpdf/mpdf/data/collations/Bosnian_(Cyrillic)_Bosnia_and_Herzegovina.php
vendored
Normal file
@ -0,0 +1,79 @@
|
||||
<?php
|
||||
return [
|
||||
65 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
68 => 100,
|
||||
69 => 101,
|
||||
70 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
79 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
84 => 116,
|
||||
85 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
90 => 122,
|
||||
1040 => 1072,
|
||||
1041 => 1073,
|
||||
1042 => 1074,
|
||||
1043 => 1075,
|
||||
1107 => 1075,
|
||||
1027 => 1075,
|
||||
1168 => 1169,
|
||||
1044 => 1076,
|
||||
1026 => 1106,
|
||||
1045 => 1077,
|
||||
1105 => 1077,
|
||||
1025 => 1077,
|
||||
1028 => 1108,
|
||||
1046 => 1078,
|
||||
1047 => 1079,
|
||||
1029 => 1109,
|
||||
1048 => 1080,
|
||||
1031 => 1111,
|
||||
1049 => 1081,
|
||||
1032 => 1112,
|
||||
1050 => 1082,
|
||||
1116 => 1082,
|
||||
1036 => 1082,
|
||||
1051 => 1083,
|
||||
1033 => 1113,
|
||||
1052 => 1084,
|
||||
1053 => 1085,
|
||||
1034 => 1114,
|
||||
1054 => 1086,
|
||||
1055 => 1087,
|
||||
1056 => 1088,
|
||||
1057 => 1089,
|
||||
1058 => 1090,
|
||||
1035 => 1115,
|
||||
1059 => 1091,
|
||||
1118 => 1091,
|
||||
1038 => 1091,
|
||||
1060 => 1092,
|
||||
1061 => 1093,
|
||||
1062 => 1094,
|
||||
1063 => 1095,
|
||||
1039 => 1119,
|
||||
1064 => 1096,
|
||||
1065 => 1097,
|
||||
1066 => 1098,
|
||||
1067 => 1099,
|
||||
1068 => 1100,
|
||||
1069 => 1101,
|
||||
1070 => 1102,
|
||||
1071 => 1103,
|
||||
];
|
||||
106
vendor/mpdf/mpdf/data/collations/Bosnian_(Latin)_Bosnia_and_Herzegovina.php
vendored
Normal file
106
vendor/mpdf/mpdf/data/collations/Bosnian_(Latin)_Bosnia_and_Herzegovina.php
vendored
Normal file
@ -0,0 +1,106 @@
|
||||
<?php
|
||||
return [
|
||||
728 => 711,
|
||||
65 => 97,
|
||||
259 => 97,
|
||||
258 => 97,
|
||||
225 => 97,
|
||||
193 => 97,
|
||||
226 => 97,
|
||||
194 => 97,
|
||||
228 => 97,
|
||||
196 => 97,
|
||||
261 => 97,
|
||||
260 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
199 => 99,
|
||||
268 => 269,
|
||||
262 => 263,
|
||||
68 => 100,
|
||||
271 => 100,
|
||||
270 => 100,
|
||||
272 => 273,
|
||||
69 => 101,
|
||||
283 => 101,
|
||||
282 => 101,
|
||||
233 => 101,
|
||||
201 => 101,
|
||||
235 => 101,
|
||||
203 => 101,
|
||||
281 => 101,
|
||||
280 => 101,
|
||||
70 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
237 => 105,
|
||||
205 => 105,
|
||||
238 => 105,
|
||||
206 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
318 => 108,
|
||||
317 => 108,
|
||||
314 => 108,
|
||||
313 => 108,
|
||||
322 => 108,
|
||||
321 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
328 => 110,
|
||||
327 => 110,
|
||||
324 => 110,
|
||||
323 => 110,
|
||||
79 => 111,
|
||||
243 => 111,
|
||||
211 => 111,
|
||||
244 => 111,
|
||||
212 => 111,
|
||||
246 => 111,
|
||||
214 => 111,
|
||||
337 => 111,
|
||||
336 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
345 => 114,
|
||||
344 => 114,
|
||||
341 => 114,
|
||||
340 => 114,
|
||||
83 => 115,
|
||||
347 => 115,
|
||||
346 => 115,
|
||||
351 => 115,
|
||||
350 => 115,
|
||||
223 => 115,
|
||||
352 => 353,
|
||||
84 => 116,
|
||||
357 => 116,
|
||||
356 => 116,
|
||||
355 => 116,
|
||||
354 => 116,
|
||||
85 => 117,
|
||||
250 => 117,
|
||||
218 => 117,
|
||||
367 => 117,
|
||||
366 => 117,
|
||||
369 => 117,
|
||||
368 => 117,
|
||||
252 => 117,
|
||||
220 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
253 => 121,
|
||||
221 => 121,
|
||||
90 => 122,
|
||||
378 => 122,
|
||||
377 => 122,
|
||||
380 => 122,
|
||||
379 => 122,
|
||||
381 => 382,
|
||||
];
|
||||
104
vendor/mpdf/mpdf/data/collations/Breton_France.php
vendored
Normal file
104
vendor/mpdf/mpdf/data/collations/Breton_France.php
vendored
Normal file
@ -0,0 +1,104 @@
|
||||
<?php
|
||||
return [
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
170 => 97,
|
||||
225 => 97,
|
||||
193 => 97,
|
||||
224 => 97,
|
||||
192 => 97,
|
||||
226 => 97,
|
||||
194 => 97,
|
||||
228 => 97,
|
||||
196 => 97,
|
||||
227 => 97,
|
||||
195 => 97,
|
||||
229 => 97,
|
||||
197 => 97,
|
||||
230 => 97,
|
||||
198 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
199 => 99,
|
||||
68 => 100,
|
||||
240 => 100,
|
||||
208 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
201 => 101,
|
||||
232 => 101,
|
||||
200 => 101,
|
||||
234 => 101,
|
||||
202 => 101,
|
||||
235 => 101,
|
||||
203 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
237 => 105,
|
||||
205 => 105,
|
||||
236 => 105,
|
||||
204 => 105,
|
||||
238 => 105,
|
||||
206 => 105,
|
||||
239 => 105,
|
||||
207 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
241 => 110,
|
||||
209 => 110,
|
||||
79 => 111,
|
||||
186 => 111,
|
||||
243 => 111,
|
||||
211 => 111,
|
||||
242 => 111,
|
||||
210 => 111,
|
||||
244 => 111,
|
||||
212 => 111,
|
||||
246 => 111,
|
||||
214 => 111,
|
||||
245 => 111,
|
||||
213 => 111,
|
||||
248 => 111,
|
||||
216 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
353 => 115,
|
||||
352 => 115,
|
||||
223 => 115,
|
||||
84 => 116,
|
||||
254 => 116,
|
||||
222 => 116,
|
||||
85 => 117,
|
||||
250 => 117,
|
||||
218 => 117,
|
||||
249 => 117,
|
||||
217 => 117,
|
||||
251 => 117,
|
||||
219 => 117,
|
||||
252 => 117,
|
||||
220 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
253 => 121,
|
||||
221 => 121,
|
||||
255 => 121,
|
||||
376 => 121,
|
||||
90 => 122,
|
||||
382 => 122,
|
||||
381 => 122,
|
||||
];
|
||||
79
vendor/mpdf/mpdf/data/collations/Bulgarian_Bulgaria.php
vendored
Normal file
79
vendor/mpdf/mpdf/data/collations/Bulgarian_Bulgaria.php
vendored
Normal file
@ -0,0 +1,79 @@
|
||||
<?php
|
||||
return [
|
||||
65 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
68 => 100,
|
||||
69 => 101,
|
||||
70 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
79 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
84 => 116,
|
||||
85 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
90 => 122,
|
||||
1040 => 1072,
|
||||
1041 => 1073,
|
||||
1042 => 1074,
|
||||
1043 => 1075,
|
||||
1107 => 1075,
|
||||
1027 => 1075,
|
||||
1168 => 1169,
|
||||
1044 => 1076,
|
||||
1026 => 1106,
|
||||
1045 => 1077,
|
||||
1105 => 1077,
|
||||
1025 => 1077,
|
||||
1028 => 1108,
|
||||
1046 => 1078,
|
||||
1047 => 1079,
|
||||
1029 => 1109,
|
||||
1048 => 1080,
|
||||
1031 => 1111,
|
||||
1049 => 1081,
|
||||
1032 => 1112,
|
||||
1050 => 1082,
|
||||
1116 => 1082,
|
||||
1036 => 1082,
|
||||
1051 => 1083,
|
||||
1033 => 1113,
|
||||
1052 => 1084,
|
||||
1053 => 1085,
|
||||
1034 => 1114,
|
||||
1054 => 1086,
|
||||
1055 => 1087,
|
||||
1056 => 1088,
|
||||
1057 => 1089,
|
||||
1058 => 1090,
|
||||
1035 => 1115,
|
||||
1059 => 1091,
|
||||
1118 => 1091,
|
||||
1038 => 1091,
|
||||
1060 => 1092,
|
||||
1061 => 1093,
|
||||
1062 => 1094,
|
||||
1063 => 1095,
|
||||
1039 => 1119,
|
||||
1064 => 1096,
|
||||
1065 => 1097,
|
||||
1066 => 1098,
|
||||
1067 => 1099,
|
||||
1068 => 1100,
|
||||
1069 => 1101,
|
||||
1070 => 1102,
|
||||
1071 => 1103,
|
||||
];
|
||||
104
vendor/mpdf/mpdf/data/collations/Catalan_Spain.php
vendored
Normal file
104
vendor/mpdf/mpdf/data/collations/Catalan_Spain.php
vendored
Normal file
@ -0,0 +1,104 @@
|
||||
<?php
|
||||
return [
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
170 => 97,
|
||||
225 => 97,
|
||||
193 => 97,
|
||||
224 => 97,
|
||||
192 => 97,
|
||||
226 => 97,
|
||||
194 => 97,
|
||||
228 => 97,
|
||||
196 => 97,
|
||||
227 => 97,
|
||||
195 => 97,
|
||||
229 => 97,
|
||||
197 => 97,
|
||||
230 => 97,
|
||||
198 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
199 => 99,
|
||||
68 => 100,
|
||||
240 => 100,
|
||||
208 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
201 => 101,
|
||||
232 => 101,
|
||||
200 => 101,
|
||||
234 => 101,
|
||||
202 => 101,
|
||||
235 => 101,
|
||||
203 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
237 => 105,
|
||||
205 => 105,
|
||||
236 => 105,
|
||||
204 => 105,
|
||||
238 => 105,
|
||||
206 => 105,
|
||||
239 => 105,
|
||||
207 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
241 => 110,
|
||||
209 => 110,
|
||||
79 => 111,
|
||||
186 => 111,
|
||||
243 => 111,
|
||||
211 => 111,
|
||||
242 => 111,
|
||||
210 => 111,
|
||||
244 => 111,
|
||||
212 => 111,
|
||||
246 => 111,
|
||||
214 => 111,
|
||||
245 => 111,
|
||||
213 => 111,
|
||||
248 => 111,
|
||||
216 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
353 => 115,
|
||||
352 => 115,
|
||||
223 => 115,
|
||||
84 => 116,
|
||||
254 => 116,
|
||||
222 => 116,
|
||||
85 => 117,
|
||||
250 => 117,
|
||||
218 => 117,
|
||||
249 => 117,
|
||||
217 => 117,
|
||||
251 => 117,
|
||||
219 => 117,
|
||||
252 => 117,
|
||||
220 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
253 => 121,
|
||||
221 => 121,
|
||||
255 => 121,
|
||||
376 => 121,
|
||||
90 => 122,
|
||||
382 => 122,
|
||||
381 => 122,
|
||||
];
|
||||
104
vendor/mpdf/mpdf/data/collations/Corsican_France.php
vendored
Normal file
104
vendor/mpdf/mpdf/data/collations/Corsican_France.php
vendored
Normal file
@ -0,0 +1,104 @@
|
||||
<?php
|
||||
return [
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
170 => 97,
|
||||
225 => 97,
|
||||
193 => 97,
|
||||
224 => 97,
|
||||
192 => 97,
|
||||
226 => 97,
|
||||
194 => 97,
|
||||
228 => 97,
|
||||
196 => 97,
|
||||
227 => 97,
|
||||
195 => 97,
|
||||
229 => 97,
|
||||
197 => 97,
|
||||
230 => 97,
|
||||
198 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
199 => 99,
|
||||
68 => 100,
|
||||
240 => 100,
|
||||
208 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
201 => 101,
|
||||
232 => 101,
|
||||
200 => 101,
|
||||
234 => 101,
|
||||
202 => 101,
|
||||
235 => 101,
|
||||
203 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
237 => 105,
|
||||
205 => 105,
|
||||
236 => 105,
|
||||
204 => 105,
|
||||
238 => 105,
|
||||
206 => 105,
|
||||
239 => 105,
|
||||
207 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
241 => 110,
|
||||
209 => 110,
|
||||
79 => 111,
|
||||
186 => 111,
|
||||
243 => 111,
|
||||
211 => 111,
|
||||
242 => 111,
|
||||
210 => 111,
|
||||
244 => 111,
|
||||
212 => 111,
|
||||
246 => 111,
|
||||
214 => 111,
|
||||
245 => 111,
|
||||
213 => 111,
|
||||
248 => 111,
|
||||
216 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
353 => 115,
|
||||
352 => 115,
|
||||
223 => 115,
|
||||
84 => 116,
|
||||
254 => 116,
|
||||
222 => 116,
|
||||
85 => 117,
|
||||
250 => 117,
|
||||
218 => 117,
|
||||
249 => 117,
|
||||
217 => 117,
|
||||
251 => 117,
|
||||
219 => 117,
|
||||
252 => 117,
|
||||
220 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
253 => 121,
|
||||
221 => 121,
|
||||
255 => 121,
|
||||
376 => 121,
|
||||
90 => 122,
|
||||
382 => 122,
|
||||
381 => 122,
|
||||
];
|
||||
106
vendor/mpdf/mpdf/data/collations/Croatian_(Latin)_Bosnia_and_Herzegovina.php
vendored
Normal file
106
vendor/mpdf/mpdf/data/collations/Croatian_(Latin)_Bosnia_and_Herzegovina.php
vendored
Normal file
@ -0,0 +1,106 @@
|
||||
<?php
|
||||
return [
|
||||
728 => 711,
|
||||
65 => 97,
|
||||
259 => 97,
|
||||
258 => 97,
|
||||
225 => 97,
|
||||
193 => 97,
|
||||
226 => 97,
|
||||
194 => 97,
|
||||
228 => 97,
|
||||
196 => 97,
|
||||
261 => 97,
|
||||
260 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
199 => 99,
|
||||
268 => 269,
|
||||
262 => 263,
|
||||
68 => 100,
|
||||
271 => 100,
|
||||
270 => 100,
|
||||
272 => 273,
|
||||
69 => 101,
|
||||
283 => 101,
|
||||
282 => 101,
|
||||
233 => 101,
|
||||
201 => 101,
|
||||
235 => 101,
|
||||
203 => 101,
|
||||
281 => 101,
|
||||
280 => 101,
|
||||
70 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
237 => 105,
|
||||
205 => 105,
|
||||
238 => 105,
|
||||
206 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
318 => 108,
|
||||
317 => 108,
|
||||
314 => 108,
|
||||
313 => 108,
|
||||
322 => 108,
|
||||
321 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
328 => 110,
|
||||
327 => 110,
|
||||
324 => 110,
|
||||
323 => 110,
|
||||
79 => 111,
|
||||
243 => 111,
|
||||
211 => 111,
|
||||
244 => 111,
|
||||
212 => 111,
|
||||
246 => 111,
|
||||
214 => 111,
|
||||
337 => 111,
|
||||
336 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
345 => 114,
|
||||
344 => 114,
|
||||
341 => 114,
|
||||
340 => 114,
|
||||
83 => 115,
|
||||
347 => 115,
|
||||
346 => 115,
|
||||
351 => 115,
|
||||
350 => 115,
|
||||
223 => 115,
|
||||
352 => 353,
|
||||
84 => 116,
|
||||
357 => 116,
|
||||
356 => 116,
|
||||
355 => 116,
|
||||
354 => 116,
|
||||
85 => 117,
|
||||
250 => 117,
|
||||
218 => 117,
|
||||
367 => 117,
|
||||
366 => 117,
|
||||
369 => 117,
|
||||
368 => 117,
|
||||
252 => 117,
|
||||
220 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
253 => 121,
|
||||
221 => 121,
|
||||
90 => 122,
|
||||
378 => 122,
|
||||
377 => 122,
|
||||
380 => 122,
|
||||
379 => 122,
|
||||
381 => 382,
|
||||
];
|
||||
106
vendor/mpdf/mpdf/data/collations/Croatian_Croatia.php
vendored
Normal file
106
vendor/mpdf/mpdf/data/collations/Croatian_Croatia.php
vendored
Normal file
@ -0,0 +1,106 @@
|
||||
<?php
|
||||
return [
|
||||
728 => 711,
|
||||
65 => 97,
|
||||
259 => 97,
|
||||
258 => 97,
|
||||
225 => 97,
|
||||
193 => 97,
|
||||
226 => 97,
|
||||
194 => 97,
|
||||
228 => 97,
|
||||
196 => 97,
|
||||
261 => 97,
|
||||
260 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
199 => 99,
|
||||
268 => 269,
|
||||
262 => 263,
|
||||
68 => 100,
|
||||
271 => 100,
|
||||
270 => 100,
|
||||
272 => 273,
|
||||
69 => 101,
|
||||
283 => 101,
|
||||
282 => 101,
|
||||
233 => 101,
|
||||
201 => 101,
|
||||
235 => 101,
|
||||
203 => 101,
|
||||
281 => 101,
|
||||
280 => 101,
|
||||
70 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
237 => 105,
|
||||
205 => 105,
|
||||
238 => 105,
|
||||
206 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
318 => 108,
|
||||
317 => 108,
|
||||
314 => 108,
|
||||
313 => 108,
|
||||
322 => 108,
|
||||
321 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
328 => 110,
|
||||
327 => 110,
|
||||
324 => 110,
|
||||
323 => 110,
|
||||
79 => 111,
|
||||
243 => 111,
|
||||
211 => 111,
|
||||
244 => 111,
|
||||
212 => 111,
|
||||
246 => 111,
|
||||
214 => 111,
|
||||
337 => 111,
|
||||
336 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
345 => 114,
|
||||
344 => 114,
|
||||
341 => 114,
|
||||
340 => 114,
|
||||
83 => 115,
|
||||
347 => 115,
|
||||
346 => 115,
|
||||
351 => 115,
|
||||
350 => 115,
|
||||
223 => 115,
|
||||
352 => 353,
|
||||
84 => 116,
|
||||
357 => 116,
|
||||
356 => 116,
|
||||
355 => 116,
|
||||
354 => 116,
|
||||
85 => 117,
|
||||
250 => 117,
|
||||
218 => 117,
|
||||
367 => 117,
|
||||
366 => 117,
|
||||
369 => 117,
|
||||
368 => 117,
|
||||
252 => 117,
|
||||
220 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
253 => 121,
|
||||
221 => 121,
|
||||
90 => 122,
|
||||
378 => 122,
|
||||
377 => 122,
|
||||
380 => 122,
|
||||
379 => 122,
|
||||
381 => 382,
|
||||
];
|
||||
107
vendor/mpdf/mpdf/data/collations/Czech_Czech_Republic.php
vendored
Normal file
107
vendor/mpdf/mpdf/data/collations/Czech_Czech_Republic.php
vendored
Normal file
@ -0,0 +1,107 @@
|
||||
<?php
|
||||
return [
|
||||
728 => 711,
|
||||
65 => 97,
|
||||
228 => 97,
|
||||
196 => 97,
|
||||
225 => 97,
|
||||
193 => 97,
|
||||
226 => 97,
|
||||
194 => 97,
|
||||
259 => 97,
|
||||
258 => 97,
|
||||
261 => 97,
|
||||
260 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
263 => 99,
|
||||
262 => 99,
|
||||
231 => 99,
|
||||
199 => 99,
|
||||
268 => 269,
|
||||
68 => 100,
|
||||
271 => 100,
|
||||
270 => 100,
|
||||
273 => 100,
|
||||
272 => 100,
|
||||
69 => 101,
|
||||
235 => 101,
|
||||
203 => 101,
|
||||
233 => 101,
|
||||
201 => 101,
|
||||
283 => 101,
|
||||
282 => 101,
|
||||
281 => 101,
|
||||
280 => 101,
|
||||
70 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
237 => 105,
|
||||
205 => 105,
|
||||
238 => 105,
|
||||
206 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
314 => 108,
|
||||
313 => 108,
|
||||
318 => 108,
|
||||
317 => 108,
|
||||
322 => 108,
|
||||
321 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
324 => 110,
|
||||
323 => 110,
|
||||
328 => 110,
|
||||
327 => 110,
|
||||
79 => 111,
|
||||
246 => 111,
|
||||
214 => 111,
|
||||
243 => 111,
|
||||
211 => 111,
|
||||
244 => 111,
|
||||
212 => 111,
|
||||
337 => 111,
|
||||
336 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
341 => 114,
|
||||
340 => 114,
|
||||
344 => 345,
|
||||
83 => 115,
|
||||
347 => 115,
|
||||
346 => 115,
|
||||
351 => 115,
|
||||
350 => 115,
|
||||
223 => 115,
|
||||
352 => 353,
|
||||
84 => 116,
|
||||
357 => 116,
|
||||
356 => 116,
|
||||
355 => 116,
|
||||
354 => 116,
|
||||
85 => 117,
|
||||
252 => 117,
|
||||
220 => 117,
|
||||
250 => 117,
|
||||
218 => 117,
|
||||
367 => 117,
|
||||
366 => 117,
|
||||
369 => 117,
|
||||
368 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
253 => 121,
|
||||
221 => 121,
|
||||
90 => 122,
|
||||
380 => 122,
|
||||
379 => 122,
|
||||
378 => 122,
|
||||
377 => 122,
|
||||
381 => 382,
|
||||
];
|
||||
101
vendor/mpdf/mpdf/data/collations/Danish_Denmark.php
vendored
Normal file
101
vendor/mpdf/mpdf/data/collations/Danish_Denmark.php
vendored
Normal file
@ -0,0 +1,101 @@
|
||||
<?php
|
||||
return [
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
170 => 97,
|
||||
225 => 97,
|
||||
193 => 97,
|
||||
224 => 97,
|
||||
192 => 97,
|
||||
226 => 97,
|
||||
194 => 97,
|
||||
227 => 97,
|
||||
195 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
199 => 99,
|
||||
68 => 100,
|
||||
240 => 100,
|
||||
208 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
201 => 101,
|
||||
232 => 101,
|
||||
200 => 101,
|
||||
234 => 101,
|
||||
202 => 101,
|
||||
235 => 101,
|
||||
203 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
237 => 105,
|
||||
205 => 105,
|
||||
236 => 105,
|
||||
204 => 105,
|
||||
238 => 105,
|
||||
206 => 105,
|
||||
239 => 105,
|
||||
207 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
241 => 110,
|
||||
209 => 110,
|
||||
79 => 111,
|
||||
186 => 111,
|
||||
243 => 111,
|
||||
211 => 111,
|
||||
242 => 111,
|
||||
210 => 111,
|
||||
244 => 111,
|
||||
212 => 111,
|
||||
245 => 111,
|
||||
213 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
353 => 115,
|
||||
352 => 115,
|
||||
223 => 115,
|
||||
84 => 116,
|
||||
254 => 116,
|
||||
222 => 116,
|
||||
85 => 117,
|
||||
250 => 117,
|
||||
218 => 117,
|
||||
249 => 117,
|
||||
217 => 117,
|
||||
251 => 117,
|
||||
219 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
253 => 121,
|
||||
221 => 121,
|
||||
255 => 121,
|
||||
376 => 121,
|
||||
252 => 121,
|
||||
220 => 121,
|
||||
90 => 122,
|
||||
382 => 122,
|
||||
381 => 122,
|
||||
198 => 230,
|
||||
228 => 230,
|
||||
196 => 230,
|
||||
216 => 248,
|
||||
246 => 248,
|
||||
214 => 248,
|
||||
197 => 229,
|
||||
];
|
||||
64
vendor/mpdf/mpdf/data/collations/Dari_Afghanistan.php
vendored
Normal file
64
vendor/mpdf/mpdf/data/collations/Dari_Afghanistan.php
vendored
Normal file
@ -0,0 +1,64 @@
|
||||
<?php
|
||||
return [
|
||||
173 => 8205,
|
||||
1600 => 8205,
|
||||
1611 => 8205,
|
||||
1612 => 8205,
|
||||
1613 => 8205,
|
||||
1614 => 8205,
|
||||
1615 => 8205,
|
||||
1616 => 8205,
|
||||
1618 => 8205,
|
||||
1617 => 8205,
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
224 => 97,
|
||||
226 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
68 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
232 => 101,
|
||||
234 => 101,
|
||||
235 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
238 => 105,
|
||||
239 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
79 => 111,
|
||||
244 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
84 => 116,
|
||||
85 => 117,
|
||||
249 => 117,
|
||||
251 => 117,
|
||||
252 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
90 => 122,
|
||||
1573 => 1575,
|
||||
1571 => 1575,
|
||||
1606 => 1722,
|
||||
1726 => 1729,
|
||||
1572 => 1608,
|
||||
1574 => 1746,
|
||||
];
|
||||
104
vendor/mpdf/mpdf/data/collations/Dutch_Belgium.php
vendored
Normal file
104
vendor/mpdf/mpdf/data/collations/Dutch_Belgium.php
vendored
Normal file
@ -0,0 +1,104 @@
|
||||
<?php
|
||||
return [
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
170 => 97,
|
||||
225 => 97,
|
||||
193 => 97,
|
||||
224 => 97,
|
||||
192 => 97,
|
||||
226 => 97,
|
||||
194 => 97,
|
||||
228 => 97,
|
||||
196 => 97,
|
||||
227 => 97,
|
||||
195 => 97,
|
||||
229 => 97,
|
||||
197 => 97,
|
||||
230 => 97,
|
||||
198 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
199 => 99,
|
||||
68 => 100,
|
||||
240 => 100,
|
||||
208 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
201 => 101,
|
||||
232 => 101,
|
||||
200 => 101,
|
||||
234 => 101,
|
||||
202 => 101,
|
||||
235 => 101,
|
||||
203 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
237 => 105,
|
||||
205 => 105,
|
||||
236 => 105,
|
||||
204 => 105,
|
||||
238 => 105,
|
||||
206 => 105,
|
||||
239 => 105,
|
||||
207 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
241 => 110,
|
||||
209 => 110,
|
||||
79 => 111,
|
||||
186 => 111,
|
||||
243 => 111,
|
||||
211 => 111,
|
||||
242 => 111,
|
||||
210 => 111,
|
||||
244 => 111,
|
||||
212 => 111,
|
||||
246 => 111,
|
||||
214 => 111,
|
||||
245 => 111,
|
||||
213 => 111,
|
||||
248 => 111,
|
||||
216 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
353 => 115,
|
||||
352 => 115,
|
||||
223 => 115,
|
||||
84 => 116,
|
||||
254 => 116,
|
||||
222 => 116,
|
||||
85 => 117,
|
||||
250 => 117,
|
||||
218 => 117,
|
||||
249 => 117,
|
||||
217 => 117,
|
||||
251 => 117,
|
||||
219 => 117,
|
||||
252 => 117,
|
||||
220 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
253 => 121,
|
||||
221 => 121,
|
||||
255 => 121,
|
||||
376 => 121,
|
||||
90 => 122,
|
||||
382 => 122,
|
||||
381 => 122,
|
||||
];
|
||||
104
vendor/mpdf/mpdf/data/collations/Dutch_Netherlands.php
vendored
Normal file
104
vendor/mpdf/mpdf/data/collations/Dutch_Netherlands.php
vendored
Normal file
@ -0,0 +1,104 @@
|
||||
<?php
|
||||
return [
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
170 => 97,
|
||||
225 => 97,
|
||||
193 => 97,
|
||||
224 => 97,
|
||||
192 => 97,
|
||||
226 => 97,
|
||||
194 => 97,
|
||||
228 => 97,
|
||||
196 => 97,
|
||||
227 => 97,
|
||||
195 => 97,
|
||||
229 => 97,
|
||||
197 => 97,
|
||||
230 => 97,
|
||||
198 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
199 => 99,
|
||||
68 => 100,
|
||||
240 => 100,
|
||||
208 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
201 => 101,
|
||||
232 => 101,
|
||||
200 => 101,
|
||||
234 => 101,
|
||||
202 => 101,
|
||||
235 => 101,
|
||||
203 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
237 => 105,
|
||||
205 => 105,
|
||||
236 => 105,
|
||||
204 => 105,
|
||||
238 => 105,
|
||||
206 => 105,
|
||||
239 => 105,
|
||||
207 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
241 => 110,
|
||||
209 => 110,
|
||||
79 => 111,
|
||||
186 => 111,
|
||||
243 => 111,
|
||||
211 => 111,
|
||||
242 => 111,
|
||||
210 => 111,
|
||||
244 => 111,
|
||||
212 => 111,
|
||||
246 => 111,
|
||||
214 => 111,
|
||||
245 => 111,
|
||||
213 => 111,
|
||||
248 => 111,
|
||||
216 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
353 => 115,
|
||||
352 => 115,
|
||||
223 => 115,
|
||||
84 => 116,
|
||||
254 => 116,
|
||||
222 => 116,
|
||||
85 => 117,
|
||||
250 => 117,
|
||||
218 => 117,
|
||||
249 => 117,
|
||||
217 => 117,
|
||||
251 => 117,
|
||||
219 => 117,
|
||||
252 => 117,
|
||||
220 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
253 => 121,
|
||||
221 => 121,
|
||||
255 => 121,
|
||||
376 => 121,
|
||||
90 => 122,
|
||||
382 => 122,
|
||||
381 => 122,
|
||||
];
|
||||
104
vendor/mpdf/mpdf/data/collations/English_Australia.php
vendored
Normal file
104
vendor/mpdf/mpdf/data/collations/English_Australia.php
vendored
Normal file
@ -0,0 +1,104 @@
|
||||
<?php
|
||||
return [
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
170 => 97,
|
||||
225 => 97,
|
||||
193 => 97,
|
||||
224 => 97,
|
||||
192 => 97,
|
||||
226 => 97,
|
||||
194 => 97,
|
||||
228 => 97,
|
||||
196 => 97,
|
||||
227 => 97,
|
||||
195 => 97,
|
||||
229 => 97,
|
||||
197 => 97,
|
||||
230 => 97,
|
||||
198 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
199 => 99,
|
||||
68 => 100,
|
||||
240 => 100,
|
||||
208 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
201 => 101,
|
||||
232 => 101,
|
||||
200 => 101,
|
||||
234 => 101,
|
||||
202 => 101,
|
||||
235 => 101,
|
||||
203 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
237 => 105,
|
||||
205 => 105,
|
||||
236 => 105,
|
||||
204 => 105,
|
||||
238 => 105,
|
||||
206 => 105,
|
||||
239 => 105,
|
||||
207 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
241 => 110,
|
||||
209 => 110,
|
||||
79 => 111,
|
||||
186 => 111,
|
||||
243 => 111,
|
||||
211 => 111,
|
||||
242 => 111,
|
||||
210 => 111,
|
||||
244 => 111,
|
||||
212 => 111,
|
||||
246 => 111,
|
||||
214 => 111,
|
||||
245 => 111,
|
||||
213 => 111,
|
||||
248 => 111,
|
||||
216 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
353 => 115,
|
||||
352 => 115,
|
||||
223 => 115,
|
||||
84 => 116,
|
||||
254 => 116,
|
||||
222 => 116,
|
||||
85 => 117,
|
||||
250 => 117,
|
||||
218 => 117,
|
||||
249 => 117,
|
||||
217 => 117,
|
||||
251 => 117,
|
||||
219 => 117,
|
||||
252 => 117,
|
||||
220 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
253 => 121,
|
||||
221 => 121,
|
||||
255 => 121,
|
||||
376 => 121,
|
||||
90 => 122,
|
||||
382 => 122,
|
||||
381 => 122,
|
||||
];
|
||||
104
vendor/mpdf/mpdf/data/collations/English_Belize.php
vendored
Normal file
104
vendor/mpdf/mpdf/data/collations/English_Belize.php
vendored
Normal file
@ -0,0 +1,104 @@
|
||||
<?php
|
||||
return [
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
170 => 97,
|
||||
225 => 97,
|
||||
193 => 97,
|
||||
224 => 97,
|
||||
192 => 97,
|
||||
226 => 97,
|
||||
194 => 97,
|
||||
228 => 97,
|
||||
196 => 97,
|
||||
227 => 97,
|
||||
195 => 97,
|
||||
229 => 97,
|
||||
197 => 97,
|
||||
230 => 97,
|
||||
198 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
199 => 99,
|
||||
68 => 100,
|
||||
240 => 100,
|
||||
208 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
201 => 101,
|
||||
232 => 101,
|
||||
200 => 101,
|
||||
234 => 101,
|
||||
202 => 101,
|
||||
235 => 101,
|
||||
203 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
237 => 105,
|
||||
205 => 105,
|
||||
236 => 105,
|
||||
204 => 105,
|
||||
238 => 105,
|
||||
206 => 105,
|
||||
239 => 105,
|
||||
207 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
241 => 110,
|
||||
209 => 110,
|
||||
79 => 111,
|
||||
186 => 111,
|
||||
243 => 111,
|
||||
211 => 111,
|
||||
242 => 111,
|
||||
210 => 111,
|
||||
244 => 111,
|
||||
212 => 111,
|
||||
246 => 111,
|
||||
214 => 111,
|
||||
245 => 111,
|
||||
213 => 111,
|
||||
248 => 111,
|
||||
216 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
353 => 115,
|
||||
352 => 115,
|
||||
223 => 115,
|
||||
84 => 116,
|
||||
254 => 116,
|
||||
222 => 116,
|
||||
85 => 117,
|
||||
250 => 117,
|
||||
218 => 117,
|
||||
249 => 117,
|
||||
217 => 117,
|
||||
251 => 117,
|
||||
219 => 117,
|
||||
252 => 117,
|
||||
220 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
253 => 121,
|
||||
221 => 121,
|
||||
255 => 121,
|
||||
376 => 121,
|
||||
90 => 122,
|
||||
382 => 122,
|
||||
381 => 122,
|
||||
];
|
||||
104
vendor/mpdf/mpdf/data/collations/English_Canada.php
vendored
Normal file
104
vendor/mpdf/mpdf/data/collations/English_Canada.php
vendored
Normal file
@ -0,0 +1,104 @@
|
||||
<?php
|
||||
return [
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
170 => 97,
|
||||
225 => 97,
|
||||
193 => 97,
|
||||
224 => 97,
|
||||
192 => 97,
|
||||
226 => 97,
|
||||
194 => 97,
|
||||
228 => 97,
|
||||
196 => 97,
|
||||
227 => 97,
|
||||
195 => 97,
|
||||
229 => 97,
|
||||
197 => 97,
|
||||
230 => 97,
|
||||
198 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
199 => 99,
|
||||
68 => 100,
|
||||
240 => 100,
|
||||
208 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
201 => 101,
|
||||
232 => 101,
|
||||
200 => 101,
|
||||
234 => 101,
|
||||
202 => 101,
|
||||
235 => 101,
|
||||
203 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
237 => 105,
|
||||
205 => 105,
|
||||
236 => 105,
|
||||
204 => 105,
|
||||
238 => 105,
|
||||
206 => 105,
|
||||
239 => 105,
|
||||
207 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
241 => 110,
|
||||
209 => 110,
|
||||
79 => 111,
|
||||
186 => 111,
|
||||
243 => 111,
|
||||
211 => 111,
|
||||
242 => 111,
|
||||
210 => 111,
|
||||
244 => 111,
|
||||
212 => 111,
|
||||
246 => 111,
|
||||
214 => 111,
|
||||
245 => 111,
|
||||
213 => 111,
|
||||
248 => 111,
|
||||
216 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
353 => 115,
|
||||
352 => 115,
|
||||
223 => 115,
|
||||
84 => 116,
|
||||
254 => 116,
|
||||
222 => 116,
|
||||
85 => 117,
|
||||
250 => 117,
|
||||
218 => 117,
|
||||
249 => 117,
|
||||
217 => 117,
|
||||
251 => 117,
|
||||
219 => 117,
|
||||
252 => 117,
|
||||
220 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
253 => 121,
|
||||
221 => 121,
|
||||
255 => 121,
|
||||
376 => 121,
|
||||
90 => 122,
|
||||
382 => 122,
|
||||
381 => 122,
|
||||
];
|
||||
104
vendor/mpdf/mpdf/data/collations/English_Caribbean.php
vendored
Normal file
104
vendor/mpdf/mpdf/data/collations/English_Caribbean.php
vendored
Normal file
@ -0,0 +1,104 @@
|
||||
<?php
|
||||
return [
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
170 => 97,
|
||||
225 => 97,
|
||||
193 => 97,
|
||||
224 => 97,
|
||||
192 => 97,
|
||||
226 => 97,
|
||||
194 => 97,
|
||||
228 => 97,
|
||||
196 => 97,
|
||||
227 => 97,
|
||||
195 => 97,
|
||||
229 => 97,
|
||||
197 => 97,
|
||||
230 => 97,
|
||||
198 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
199 => 99,
|
||||
68 => 100,
|
||||
240 => 100,
|
||||
208 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
201 => 101,
|
||||
232 => 101,
|
||||
200 => 101,
|
||||
234 => 101,
|
||||
202 => 101,
|
||||
235 => 101,
|
||||
203 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
237 => 105,
|
||||
205 => 105,
|
||||
236 => 105,
|
||||
204 => 105,
|
||||
238 => 105,
|
||||
206 => 105,
|
||||
239 => 105,
|
||||
207 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
241 => 110,
|
||||
209 => 110,
|
||||
79 => 111,
|
||||
186 => 111,
|
||||
243 => 111,
|
||||
211 => 111,
|
||||
242 => 111,
|
||||
210 => 111,
|
||||
244 => 111,
|
||||
212 => 111,
|
||||
246 => 111,
|
||||
214 => 111,
|
||||
245 => 111,
|
||||
213 => 111,
|
||||
248 => 111,
|
||||
216 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
353 => 115,
|
||||
352 => 115,
|
||||
223 => 115,
|
||||
84 => 116,
|
||||
254 => 116,
|
||||
222 => 116,
|
||||
85 => 117,
|
||||
250 => 117,
|
||||
218 => 117,
|
||||
249 => 117,
|
||||
217 => 117,
|
||||
251 => 117,
|
||||
219 => 117,
|
||||
252 => 117,
|
||||
220 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
253 => 121,
|
||||
221 => 121,
|
||||
255 => 121,
|
||||
376 => 121,
|
||||
90 => 122,
|
||||
382 => 122,
|
||||
381 => 122,
|
||||
];
|
||||
104
vendor/mpdf/mpdf/data/collations/English_India.php
vendored
Normal file
104
vendor/mpdf/mpdf/data/collations/English_India.php
vendored
Normal file
@ -0,0 +1,104 @@
|
||||
<?php
|
||||
return [
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
170 => 97,
|
||||
225 => 97,
|
||||
193 => 97,
|
||||
224 => 97,
|
||||
192 => 97,
|
||||
226 => 97,
|
||||
194 => 97,
|
||||
228 => 97,
|
||||
196 => 97,
|
||||
227 => 97,
|
||||
195 => 97,
|
||||
229 => 97,
|
||||
197 => 97,
|
||||
230 => 97,
|
||||
198 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
199 => 99,
|
||||
68 => 100,
|
||||
240 => 100,
|
||||
208 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
201 => 101,
|
||||
232 => 101,
|
||||
200 => 101,
|
||||
234 => 101,
|
||||
202 => 101,
|
||||
235 => 101,
|
||||
203 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
237 => 105,
|
||||
205 => 105,
|
||||
236 => 105,
|
||||
204 => 105,
|
||||
238 => 105,
|
||||
206 => 105,
|
||||
239 => 105,
|
||||
207 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
241 => 110,
|
||||
209 => 110,
|
||||
79 => 111,
|
||||
186 => 111,
|
||||
243 => 111,
|
||||
211 => 111,
|
||||
242 => 111,
|
||||
210 => 111,
|
||||
244 => 111,
|
||||
212 => 111,
|
||||
246 => 111,
|
||||
214 => 111,
|
||||
245 => 111,
|
||||
213 => 111,
|
||||
248 => 111,
|
||||
216 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
353 => 115,
|
||||
352 => 115,
|
||||
223 => 115,
|
||||
84 => 116,
|
||||
254 => 116,
|
||||
222 => 116,
|
||||
85 => 117,
|
||||
250 => 117,
|
||||
218 => 117,
|
||||
249 => 117,
|
||||
217 => 117,
|
||||
251 => 117,
|
||||
219 => 117,
|
||||
252 => 117,
|
||||
220 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
253 => 121,
|
||||
221 => 121,
|
||||
255 => 121,
|
||||
376 => 121,
|
||||
90 => 122,
|
||||
382 => 122,
|
||||
381 => 122,
|
||||
];
|
||||
104
vendor/mpdf/mpdf/data/collations/English_Ireland.php
vendored
Normal file
104
vendor/mpdf/mpdf/data/collations/English_Ireland.php
vendored
Normal file
@ -0,0 +1,104 @@
|
||||
<?php
|
||||
return [
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
170 => 97,
|
||||
225 => 97,
|
||||
193 => 97,
|
||||
224 => 97,
|
||||
192 => 97,
|
||||
226 => 97,
|
||||
194 => 97,
|
||||
228 => 97,
|
||||
196 => 97,
|
||||
227 => 97,
|
||||
195 => 97,
|
||||
229 => 97,
|
||||
197 => 97,
|
||||
230 => 97,
|
||||
198 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
199 => 99,
|
||||
68 => 100,
|
||||
240 => 100,
|
||||
208 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
201 => 101,
|
||||
232 => 101,
|
||||
200 => 101,
|
||||
234 => 101,
|
||||
202 => 101,
|
||||
235 => 101,
|
||||
203 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
237 => 105,
|
||||
205 => 105,
|
||||
236 => 105,
|
||||
204 => 105,
|
||||
238 => 105,
|
||||
206 => 105,
|
||||
239 => 105,
|
||||
207 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
241 => 110,
|
||||
209 => 110,
|
||||
79 => 111,
|
||||
186 => 111,
|
||||
243 => 111,
|
||||
211 => 111,
|
||||
242 => 111,
|
||||
210 => 111,
|
||||
244 => 111,
|
||||
212 => 111,
|
||||
246 => 111,
|
||||
214 => 111,
|
||||
245 => 111,
|
||||
213 => 111,
|
||||
248 => 111,
|
||||
216 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
353 => 115,
|
||||
352 => 115,
|
||||
223 => 115,
|
||||
84 => 116,
|
||||
254 => 116,
|
||||
222 => 116,
|
||||
85 => 117,
|
||||
250 => 117,
|
||||
218 => 117,
|
||||
249 => 117,
|
||||
217 => 117,
|
||||
251 => 117,
|
||||
219 => 117,
|
||||
252 => 117,
|
||||
220 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
253 => 121,
|
||||
221 => 121,
|
||||
255 => 121,
|
||||
376 => 121,
|
||||
90 => 122,
|
||||
382 => 122,
|
||||
381 => 122,
|
||||
];
|
||||
104
vendor/mpdf/mpdf/data/collations/English_Jamaica.php
vendored
Normal file
104
vendor/mpdf/mpdf/data/collations/English_Jamaica.php
vendored
Normal file
@ -0,0 +1,104 @@
|
||||
<?php
|
||||
return [
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
170 => 97,
|
||||
225 => 97,
|
||||
193 => 97,
|
||||
224 => 97,
|
||||
192 => 97,
|
||||
226 => 97,
|
||||
194 => 97,
|
||||
228 => 97,
|
||||
196 => 97,
|
||||
227 => 97,
|
||||
195 => 97,
|
||||
229 => 97,
|
||||
197 => 97,
|
||||
230 => 97,
|
||||
198 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
199 => 99,
|
||||
68 => 100,
|
||||
240 => 100,
|
||||
208 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
201 => 101,
|
||||
232 => 101,
|
||||
200 => 101,
|
||||
234 => 101,
|
||||
202 => 101,
|
||||
235 => 101,
|
||||
203 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
237 => 105,
|
||||
205 => 105,
|
||||
236 => 105,
|
||||
204 => 105,
|
||||
238 => 105,
|
||||
206 => 105,
|
||||
239 => 105,
|
||||
207 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
241 => 110,
|
||||
209 => 110,
|
||||
79 => 111,
|
||||
186 => 111,
|
||||
243 => 111,
|
||||
211 => 111,
|
||||
242 => 111,
|
||||
210 => 111,
|
||||
244 => 111,
|
||||
212 => 111,
|
||||
246 => 111,
|
||||
214 => 111,
|
||||
245 => 111,
|
||||
213 => 111,
|
||||
248 => 111,
|
||||
216 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
353 => 115,
|
||||
352 => 115,
|
||||
223 => 115,
|
||||
84 => 116,
|
||||
254 => 116,
|
||||
222 => 116,
|
||||
85 => 117,
|
||||
250 => 117,
|
||||
218 => 117,
|
||||
249 => 117,
|
||||
217 => 117,
|
||||
251 => 117,
|
||||
219 => 117,
|
||||
252 => 117,
|
||||
220 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
253 => 121,
|
||||
221 => 121,
|
||||
255 => 121,
|
||||
376 => 121,
|
||||
90 => 122,
|
||||
382 => 122,
|
||||
381 => 122,
|
||||
];
|
||||
104
vendor/mpdf/mpdf/data/collations/English_Malaysia.php
vendored
Normal file
104
vendor/mpdf/mpdf/data/collations/English_Malaysia.php
vendored
Normal file
@ -0,0 +1,104 @@
|
||||
<?php
|
||||
return [
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
170 => 97,
|
||||
225 => 97,
|
||||
193 => 97,
|
||||
224 => 97,
|
||||
192 => 97,
|
||||
226 => 97,
|
||||
194 => 97,
|
||||
228 => 97,
|
||||
196 => 97,
|
||||
227 => 97,
|
||||
195 => 97,
|
||||
229 => 97,
|
||||
197 => 97,
|
||||
230 => 97,
|
||||
198 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
199 => 99,
|
||||
68 => 100,
|
||||
240 => 100,
|
||||
208 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
201 => 101,
|
||||
232 => 101,
|
||||
200 => 101,
|
||||
234 => 101,
|
||||
202 => 101,
|
||||
235 => 101,
|
||||
203 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
237 => 105,
|
||||
205 => 105,
|
||||
236 => 105,
|
||||
204 => 105,
|
||||
238 => 105,
|
||||
206 => 105,
|
||||
239 => 105,
|
||||
207 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
241 => 110,
|
||||
209 => 110,
|
||||
79 => 111,
|
||||
186 => 111,
|
||||
243 => 111,
|
||||
211 => 111,
|
||||
242 => 111,
|
||||
210 => 111,
|
||||
244 => 111,
|
||||
212 => 111,
|
||||
246 => 111,
|
||||
214 => 111,
|
||||
245 => 111,
|
||||
213 => 111,
|
||||
248 => 111,
|
||||
216 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
353 => 115,
|
||||
352 => 115,
|
||||
223 => 115,
|
||||
84 => 116,
|
||||
254 => 116,
|
||||
222 => 116,
|
||||
85 => 117,
|
||||
250 => 117,
|
||||
218 => 117,
|
||||
249 => 117,
|
||||
217 => 117,
|
||||
251 => 117,
|
||||
219 => 117,
|
||||
252 => 117,
|
||||
220 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
253 => 121,
|
||||
221 => 121,
|
||||
255 => 121,
|
||||
376 => 121,
|
||||
90 => 122,
|
||||
382 => 122,
|
||||
381 => 122,
|
||||
];
|
||||
104
vendor/mpdf/mpdf/data/collations/English_New_Zealand.php
vendored
Normal file
104
vendor/mpdf/mpdf/data/collations/English_New_Zealand.php
vendored
Normal file
@ -0,0 +1,104 @@
|
||||
<?php
|
||||
return [
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
170 => 97,
|
||||
225 => 97,
|
||||
193 => 97,
|
||||
224 => 97,
|
||||
192 => 97,
|
||||
226 => 97,
|
||||
194 => 97,
|
||||
228 => 97,
|
||||
196 => 97,
|
||||
227 => 97,
|
||||
195 => 97,
|
||||
229 => 97,
|
||||
197 => 97,
|
||||
230 => 97,
|
||||
198 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
199 => 99,
|
||||
68 => 100,
|
||||
240 => 100,
|
||||
208 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
201 => 101,
|
||||
232 => 101,
|
||||
200 => 101,
|
||||
234 => 101,
|
||||
202 => 101,
|
||||
235 => 101,
|
||||
203 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
237 => 105,
|
||||
205 => 105,
|
||||
236 => 105,
|
||||
204 => 105,
|
||||
238 => 105,
|
||||
206 => 105,
|
||||
239 => 105,
|
||||
207 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
241 => 110,
|
||||
209 => 110,
|
||||
79 => 111,
|
||||
186 => 111,
|
||||
243 => 111,
|
||||
211 => 111,
|
||||
242 => 111,
|
||||
210 => 111,
|
||||
244 => 111,
|
||||
212 => 111,
|
||||
246 => 111,
|
||||
214 => 111,
|
||||
245 => 111,
|
||||
213 => 111,
|
||||
248 => 111,
|
||||
216 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
353 => 115,
|
||||
352 => 115,
|
||||
223 => 115,
|
||||
84 => 116,
|
||||
254 => 116,
|
||||
222 => 116,
|
||||
85 => 117,
|
||||
250 => 117,
|
||||
218 => 117,
|
||||
249 => 117,
|
||||
217 => 117,
|
||||
251 => 117,
|
||||
219 => 117,
|
||||
252 => 117,
|
||||
220 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
253 => 121,
|
||||
221 => 121,
|
||||
255 => 121,
|
||||
376 => 121,
|
||||
90 => 122,
|
||||
382 => 122,
|
||||
381 => 122,
|
||||
];
|
||||
104
vendor/mpdf/mpdf/data/collations/English_Republic_of_the_Philippines.php
vendored
Normal file
104
vendor/mpdf/mpdf/data/collations/English_Republic_of_the_Philippines.php
vendored
Normal file
@ -0,0 +1,104 @@
|
||||
<?php
|
||||
return [
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
170 => 97,
|
||||
225 => 97,
|
||||
193 => 97,
|
||||
224 => 97,
|
||||
192 => 97,
|
||||
226 => 97,
|
||||
194 => 97,
|
||||
228 => 97,
|
||||
196 => 97,
|
||||
227 => 97,
|
||||
195 => 97,
|
||||
229 => 97,
|
||||
197 => 97,
|
||||
230 => 97,
|
||||
198 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
199 => 99,
|
||||
68 => 100,
|
||||
240 => 100,
|
||||
208 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
201 => 101,
|
||||
232 => 101,
|
||||
200 => 101,
|
||||
234 => 101,
|
||||
202 => 101,
|
||||
235 => 101,
|
||||
203 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
237 => 105,
|
||||
205 => 105,
|
||||
236 => 105,
|
||||
204 => 105,
|
||||
238 => 105,
|
||||
206 => 105,
|
||||
239 => 105,
|
||||
207 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
241 => 110,
|
||||
209 => 110,
|
||||
79 => 111,
|
||||
186 => 111,
|
||||
243 => 111,
|
||||
211 => 111,
|
||||
242 => 111,
|
||||
210 => 111,
|
||||
244 => 111,
|
||||
212 => 111,
|
||||
246 => 111,
|
||||
214 => 111,
|
||||
245 => 111,
|
||||
213 => 111,
|
||||
248 => 111,
|
||||
216 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
353 => 115,
|
||||
352 => 115,
|
||||
223 => 115,
|
||||
84 => 116,
|
||||
254 => 116,
|
||||
222 => 116,
|
||||
85 => 117,
|
||||
250 => 117,
|
||||
218 => 117,
|
||||
249 => 117,
|
||||
217 => 117,
|
||||
251 => 117,
|
||||
219 => 117,
|
||||
252 => 117,
|
||||
220 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
253 => 121,
|
||||
221 => 121,
|
||||
255 => 121,
|
||||
376 => 121,
|
||||
90 => 122,
|
||||
382 => 122,
|
||||
381 => 122,
|
||||
];
|
||||
104
vendor/mpdf/mpdf/data/collations/English_Singapore.php
vendored
Normal file
104
vendor/mpdf/mpdf/data/collations/English_Singapore.php
vendored
Normal file
@ -0,0 +1,104 @@
|
||||
<?php
|
||||
return [
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
170 => 97,
|
||||
225 => 97,
|
||||
193 => 97,
|
||||
224 => 97,
|
||||
192 => 97,
|
||||
226 => 97,
|
||||
194 => 97,
|
||||
228 => 97,
|
||||
196 => 97,
|
||||
227 => 97,
|
||||
195 => 97,
|
||||
229 => 97,
|
||||
197 => 97,
|
||||
230 => 97,
|
||||
198 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
199 => 99,
|
||||
68 => 100,
|
||||
240 => 100,
|
||||
208 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
201 => 101,
|
||||
232 => 101,
|
||||
200 => 101,
|
||||
234 => 101,
|
||||
202 => 101,
|
||||
235 => 101,
|
||||
203 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
237 => 105,
|
||||
205 => 105,
|
||||
236 => 105,
|
||||
204 => 105,
|
||||
238 => 105,
|
||||
206 => 105,
|
||||
239 => 105,
|
||||
207 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
241 => 110,
|
||||
209 => 110,
|
||||
79 => 111,
|
||||
186 => 111,
|
||||
243 => 111,
|
||||
211 => 111,
|
||||
242 => 111,
|
||||
210 => 111,
|
||||
244 => 111,
|
||||
212 => 111,
|
||||
246 => 111,
|
||||
214 => 111,
|
||||
245 => 111,
|
||||
213 => 111,
|
||||
248 => 111,
|
||||
216 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
353 => 115,
|
||||
352 => 115,
|
||||
223 => 115,
|
||||
84 => 116,
|
||||
254 => 116,
|
||||
222 => 116,
|
||||
85 => 117,
|
||||
250 => 117,
|
||||
218 => 117,
|
||||
249 => 117,
|
||||
217 => 117,
|
||||
251 => 117,
|
||||
219 => 117,
|
||||
252 => 117,
|
||||
220 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
253 => 121,
|
||||
221 => 121,
|
||||
255 => 121,
|
||||
376 => 121,
|
||||
90 => 122,
|
||||
382 => 122,
|
||||
381 => 122,
|
||||
];
|
||||
104
vendor/mpdf/mpdf/data/collations/English_South_Africa.php
vendored
Normal file
104
vendor/mpdf/mpdf/data/collations/English_South_Africa.php
vendored
Normal file
@ -0,0 +1,104 @@
|
||||
<?php
|
||||
return [
|
||||
710 => 94,
|
||||
189 => 188,
|
||||
190 => 179,
|
||||
65 => 97,
|
||||
170 => 97,
|
||||
225 => 97,
|
||||
193 => 97,
|
||||
224 => 97,
|
||||
192 => 97,
|
||||
226 => 97,
|
||||
194 => 97,
|
||||
228 => 97,
|
||||
196 => 97,
|
||||
227 => 97,
|
||||
195 => 97,
|
||||
229 => 97,
|
||||
197 => 97,
|
||||
230 => 97,
|
||||
198 => 97,
|
||||
66 => 98,
|
||||
67 => 99,
|
||||
231 => 99,
|
||||
199 => 99,
|
||||
68 => 100,
|
||||
240 => 100,
|
||||
208 => 100,
|
||||
69 => 101,
|
||||
233 => 101,
|
||||
201 => 101,
|
||||
232 => 101,
|
||||
200 => 101,
|
||||
234 => 101,
|
||||
202 => 101,
|
||||
235 => 101,
|
||||
203 => 101,
|
||||
70 => 102,
|
||||
402 => 102,
|
||||
71 => 103,
|
||||
72 => 104,
|
||||
73 => 105,
|
||||
237 => 105,
|
||||
205 => 105,
|
||||
236 => 105,
|
||||
204 => 105,
|
||||
238 => 105,
|
||||
206 => 105,
|
||||
239 => 105,
|
||||
207 => 105,
|
||||
74 => 106,
|
||||
75 => 107,
|
||||
76 => 108,
|
||||
77 => 109,
|
||||
78 => 110,
|
||||
241 => 110,
|
||||
209 => 110,
|
||||
79 => 111,
|
||||
186 => 111,
|
||||
243 => 111,
|
||||
211 => 111,
|
||||
242 => 111,
|
||||
210 => 111,
|
||||
244 => 111,
|
||||
212 => 111,
|
||||
246 => 111,
|
||||
214 => 111,
|
||||
245 => 111,
|
||||
213 => 111,
|
||||
248 => 111,
|
||||
216 => 111,
|
||||
339 => 111,
|
||||
338 => 111,
|
||||
80 => 112,
|
||||
81 => 113,
|
||||
82 => 114,
|
||||
83 => 115,
|
||||
353 => 115,
|
||||
352 => 115,
|
||||
223 => 115,
|
||||
84 => 116,
|
||||
254 => 116,
|
||||
222 => 116,
|
||||
85 => 117,
|
||||
250 => 117,
|
||||
218 => 117,
|
||||
249 => 117,
|
||||
217 => 117,
|
||||
251 => 117,
|
||||
219 => 117,
|
||||
252 => 117,
|
||||
220 => 117,
|
||||
86 => 118,
|
||||
87 => 119,
|
||||
88 => 120,
|
||||
89 => 121,
|
||||
253 => 121,
|
||||
221 => 121,
|
||||
255 => 121,
|
||||
376 => 121,
|
||||
90 => 122,
|
||||
382 => 122,
|
||||
381 => 122,
|
||||
];
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user