%PDF- %PDF-
| Direktori : /home/q/g/b/qgbqkvz/www/wp-content/plugins/wp-scss/scssphp/src/Logger/ |
| Current File : /home/q/g/b/qgbqkvz/www/wp-content/plugins/wp-scss/scssphp/src/Logger/AdaptingLogger.php |
<?php
/**
* SCSSPHP
*
* @copyright 2012-2020 Leaf Corcoran
*
* @license http://opensource.org/licenses/MIT MIT
*
* @link http://scssphp.github.io/scssphp
*/
namespace ScssPhp\ScssPhp\Logger;
use ScssPhp\ScssPhp\SourceSpan\FileSpan;
use ScssPhp\ScssPhp\StackTrace\Trace;
use ScssPhp\ScssPhp\Util;
use ScssPhp\ScssPhp\Util\Path;
/**
* @internal
*/
final class AdaptingLogger implements LocationAwareLoggerInterface
{
/**
* @var LoggerInterface
* @readonly
*/
private $logger;
private function __construct(LoggerInterface $logger)
{
$this->logger = $logger;
}
public static function adaptLogger(LoggerInterface $logger): LocationAwareLoggerInterface
{
if ($logger instanceof LocationAwareLoggerInterface) {
return $logger;
}
return new self($logger);
}
public function warn(string $message, bool $deprecation = false, ?FileSpan $span = null, ?Trace $trace = null)
{
if ($span === null) {
$formattedMessage = $message;
} elseif ($trace !== null) {
// If there's a span and a trace, the span's location information is
// probably duplicated in the trace, so we just use it for highlighting.
$formattedMessage = $message;
// TODO implement the highlight of a span
} else {
$formattedMessage = ' on ' . $span->message("\n" . $message);
}
if ($trace !== null) {
$formattedMessage .= "\n" . Util::indent(rtrim($trace->getFormattedTrace()), 4);
}
$this->logger->warn($formattedMessage, $deprecation);
}
public function debug(string $message, FileSpan $span = null)
{
$location = '';
if ($span !== null) {
$url = $span->getStart()->getSourceUrl() === null ? '-' : Path::prettyUri($span->getStart()->getSourceUrl());
$line = $span->getStart()->getLine() + 1;
$location = "$url:$line ";
}
$this->logger->debug(sprintf("%sDEBUG: %s", $location, $message));
}
}