101 lines
2.5 KiB
PHP
101 lines
2.5 KiB
PHP
<?php
|
|
/**
|
|
* Author: Nil Portugués Calderó <contact@nilportugues.com>
|
|
* Date: 12/22/14
|
|
* Time: 1:19 PM.
|
|
*
|
|
* 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\Tokenizer\Tokenizer;
|
|
|
|
/**
|
|
* Class WhiteSpace.
|
|
*/
|
|
class WhiteSpace
|
|
{
|
|
/**
|
|
* @param $token
|
|
*
|
|
* @return bool
|
|
*/
|
|
public static function tokenHasExtraWhiteSpaceLeft($token)
|
|
{
|
|
return
|
|
$token[Tokenizer::TOKEN_VALUE] === '.'
|
|
|| $token[Tokenizer::TOKEN_VALUE] === ','
|
|
|| $token[Tokenizer::TOKEN_VALUE] === ';';
|
|
}
|
|
|
|
/**
|
|
* @param $token
|
|
*
|
|
* @return bool
|
|
*/
|
|
public static function tokenHasExtraWhiteSpaceRight($token)
|
|
{
|
|
return
|
|
$token[Tokenizer::TOKEN_VALUE] === '('
|
|
|| $token[Tokenizer::TOKEN_VALUE] === '.';
|
|
}
|
|
|
|
/**
|
|
* @param $tokenType
|
|
*
|
|
* @return bool
|
|
*/
|
|
public static function tokenIsNumberAndHasExtraWhiteSpaceRight($tokenType)
|
|
{
|
|
return
|
|
$tokenType !== Tokenizer::TOKEN_TYPE_QUOTE
|
|
&& $tokenType !== Tokenizer::TOKEN_TYPE_BACK_TICK_QUOTE
|
|
&& $tokenType !== Tokenizer::TOKEN_TYPE_WORD
|
|
&& $tokenType !== Tokenizer::TOKEN_TYPE_NUMBER;
|
|
}
|
|
|
|
/**
|
|
* @param $token
|
|
*
|
|
* @return bool
|
|
*/
|
|
public static function tokenHasExtraWhiteSpaces($token)
|
|
{
|
|
return \strpos($token[Tokenizer::TOKEN_VALUE], ' ') !== false
|
|
|| \strpos($token[Tokenizer::TOKEN_VALUE], "\n") !== false
|
|
|| \strpos($token[Tokenizer::TOKEN_VALUE], "\t") !== false;
|
|
}
|
|
|
|
/**
|
|
* @param $originalTokens
|
|
* @param $token
|
|
*
|
|
* @return bool
|
|
*/
|
|
public static function isPrecedingCurrentTokenOfTokenTypeWhiteSpace($originalTokens, $token)
|
|
{
|
|
return isset($originalTokens[$token['i'] - 1])
|
|
&& $originalTokens[$token['i'] - 1][Tokenizer::TOKEN_TYPE] !== Tokenizer::TOKEN_TYPE_WHITESPACE;
|
|
}
|
|
|
|
/**
|
|
* @param $originalTokens
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function removeTokenWhitespace(array &$originalTokens)
|
|
{
|
|
$tokens = [];
|
|
foreach ($originalTokens as $i => &$token) {
|
|
if ($token[Tokenizer::TOKEN_TYPE] !== Tokenizer::TOKEN_TYPE_WHITESPACE) {
|
|
$token['i'] = $i;
|
|
$tokens[] = $token;
|
|
}
|
|
}
|
|
|
|
return $tokens;
|
|
}
|
|
}
|