Добавлен цикл проверки сайтов

This commit is contained in:
2024-08-12 15:14:49 +03:00
parent 0b56cd37b5
commit 6b7199a326
115 changed files with 15964 additions and 88 deletions

View File

@@ -0,0 +1,183 @@
<?php
/**
* Author: Nil Portugués Calderó <contact@nilportugues.com>
* Date: 12/22/14
* Time: 11:37 AM.
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace NilPortugues\Sql\QueryFormatter\Helper;
use NilPortugues\Sql\QueryFormatter\Formatter;
use NilPortugues\Sql\QueryFormatter\Tokenizer\Tokenizer;
/**
* Class NewLine.
*/
class NewLine
{
/**
* @var bool
*/
protected $newline = false;
/**
* @var \NilPortugues\Sql\QueryFormatter\Formatter
*/
protected $formatter;
/**
* @var Indent
*/
protected $indentation;
/**
* @var Parentheses
*/
protected $parentheses;
/**
* @param Formatter $formatter
* @param Indent $indentation
* @param Parentheses $parentheses
*/
public function __construct(Formatter $formatter, Indent $indentation, Parentheses $parentheses)
{
$this->formatter = $formatter;
$this->indentation = $indentation;
$this->parentheses = $parentheses;
}
/**
* Adds a new line break if needed.
*
* @param string $tab
*
* @return bool
*/
public function addNewLineBreak($tab)
{
$addedNewline = false;
if (true === $this->newline) {
$this->formatter->appendToFormattedSql("\n".str_repeat($tab, $this->indentation->getIndentLvl()));
$this->newline = false;
$addedNewline = true;
}
return $addedNewline;
}
/**
* @param $token
*/
public function writeNewLineForLongCommaInlineValues($token)
{
if (',' === $token[Tokenizer::TOKEN_VALUE]) {
if ($this->formatter->getInlineCount() >= 30) {
$this->formatter->setInlineCount(0);
$this->newline = true;
}
}
}
/**
* @param int $length
*/
public function writeNewLineForLongInlineValues($length)
{
if ($this->parentheses->getInlineParentheses() && $length > 30) {
$this->indentation->setIncreaseBlockIndent(true);
$this->indentation->setInlineIndented(true);
$this->newline = true;
}
}
/**
* Adds a new line break for an opening parentheses for a non-inline expression.
*/
public function addNewLineAfterOpeningParentheses()
{
if (false === $this->parentheses->getInlineParentheses()) {
$this->indentation->setIncreaseBlockIndent(true);
$this->newline = true;
}
}
/**
* @param bool $addedNewline
* @param string $tab
*/
public function addNewLineBeforeToken($addedNewline, $tab)
{
if (false === $addedNewline) {
$this->formatter->appendToFormattedSql(
"\n".str_repeat($tab, $this->indentation->getIndentLvl())
);
}
}
/**
* Add a newline before the top level reserved word if necessary and indent.
*
* @param bool $addedNewline
* @param string $tab
*/
public function writeNewLineBecauseOfTopLevelReservedWord($addedNewline, $tab)
{
if (false === $addedNewline) {
$this->formatter->appendToFormattedSql("\n");
} else {
$this->formatter->setFormattedSql(\rtrim($this->formatter->getFormattedSql(), $tab));
}
$this->formatter->appendToFormattedSql(\str_repeat($tab, $this->indentation->getIndentLvl()));
$this->newline = true;
}
/**
* Commas start a new line unless they are found within inline parentheses or SQL 'LIMIT' clause.
* If the previous TOKEN_VALUE is 'LIMIT', undo new line.
*/
public function writeNewLineBecauseOfComma()
{
$this->newline = true;
if (true === $this->formatter->getClauseLimit()) {
$this->newline = false;
$this->formatter->setClauseLimit(false);
}
}
/**
* @param $token
*
* @return bool
*/
public function isTokenTypeReservedNewLine($token)
{
return $token[Tokenizer::TOKEN_TYPE] === Tokenizer::TOKEN_TYPE_RESERVED_NEWLINE;
}
/**
* @return bool
*/
public function getNewline()
{
return $this->newline;
}
/**
* @param bool $newline
*
* @return $this
*/
public function setNewline($newline)
{
$this->newline = $newline;
return $this;
}
}