• Модуль: perfmon
  • Путь к файлу: ~/bitrix/modules/perfmon/classes/general/sql_format.php
  • Класс: CSqlFormat
  • Вызов: CSqlFormat::format
public function format($tokens)
{
	$result = "";
	$skipWS = false;
	foreach ($tokens as $i => $token)
	{
		if ($token[1] === ",")
		{
			$this->removeTrailingSpaces($result);
			$result .= ",x3".str_repeat("x2", $token[2]);
			$skipWS = true;
		}
		elseif (
			$token[1] === "="
			|| $token[1] === "-"
			|| $token[1] === "+"
			|| $token[1] === "*"
			|| $token[1] === "/"
			|| $token[1] === "<="
			|| $token[1] === ">="
		)
		{
			$this->removeTrailingSpaces($result);
			$result .= "x1".$token[1]."x1";
			$skipWS = true;
		}
		elseif (
			$token[1] === "INNER"
			|| $token[1] === "LEFT"
			|| $token[1] === "SET"
			|| $token[1] === "AND"
			|| $token[1] === "OR"
		)
		{
			$result .= "x3".str_repeat("x2", $token[2]).$token[1];
		}
		else
		{
			if ($skipWS)
			{
				$skipWS = false;
				if ($token[0] === T_WHITESPACE)
					continue;
			}
			elseif ($tokens[$i - 1][2] <> $token[2])
			{
				$result .= "x3".str_repeat("x2", $token[2]);
				if ($token[0] === T_WHITESPACE)
					continue;
			}

			if ($token[0] === T_WHITESPACE)
				$result .= "x1";
			else
				$result .= $token[1];
		}
	}

	$result = preg_replace_callback("/(
		\([\x1\x2\x3_0-9A-Za-z.0-9_,]+\)
		|\([\x1\x2\x3'x%0-9,]+\)
		|\([\x1\x2\x3]*[a-zA-Z0-9_.]+[\x1\x2\x3]*=[\x1\x2\x3]*[a-zA-Z0-9_.']+[\x1\x2\x3]*\)
	)/x", array($this, "removeSpaces"), $result);

	$result = str_replace(array(
		"x1",
		"x2",
		"x3",
	), array(
		$this->getSpace(),
		$this->getTab(),
		$this->getEol(),
	), $result);

	return $result;
}