diff options
author | Dan Ungureanu <udan1107@gmail.com> | 2015-06-30 01:05:38 +0300 |
---|---|---|
committer | Dan Ungureanu <udan1107@gmail.com> | 2015-06-30 01:05:38 +0300 |
commit | a2354cf85acd032efa374d1f9f611f02fdbe75f6 (patch) | |
tree | 3094a3144239860cb72c2f0871660a3f7c862e53 /src/Token.php | |
parent | 5f15789bd325c4fcd6642ecfeea18a5b639acc99 (diff) | |
download | sql-parser-a2354cf85acd032efa374d1f9f611f02fdbe75f6.zip sql-parser-a2354cf85acd032efa374d1f9f611f02fdbe75f6.tar.gz sql-parser-a2354cf85acd032efa374d1f9f611f02fdbe75f6.tar.bz2 |
Added statement builder (converts statement trees into executable query strings).
Implemented support for UNIONs in parser.
Code coverage is now over 99%.
Fixed CHECKSUM statement (typos).
Refactored code. Removed pieces of duplicated code.
Improved documentation and fixed coding style.
Improved PHPUnit's configuration (more test suites for fine-grained testing).
Diffstat (limited to 'src/Token.php')
-rw-r--r-- | src/Token.php | 86 |
1 files changed, 43 insertions, 43 deletions
diff --git a/src/Token.php b/src/Token.php index fa23d28..1db0d1d 100644 --- a/src/Token.php +++ b/src/Token.php @@ -217,52 +217,52 @@ class Token public function extract() { switch ($this->type) { - case Token::TYPE_KEYWORD: - if (!($this->flags & Token::FLAG_KEYWORD_RESERVED)) { - // Unreserved keywords should stay the way they are because they - // might represent field names. - return $this->token; - } - return strtoupper($this->token); - case Token::TYPE_WHITESPACE: - return ' '; - case Token::TYPE_BOOL: - return strtoupper($this->token) === 'TRUE'; - case Token::TYPE_NUMBER: - $ret = str_replace('--', '', $this->token); // e.g. ---42 === -42 - if ($this->flags & Token::FLAG_NUMBER_HEX) { - if ($this->flags & Token::FLAG_NUMBER_NEGATIVE) { - $ret = str_replace('-', '', $this->token); - sscanf($ret, "%x", $ret); - $ret = -$ret; - } else { - sscanf($ret, "%x", $ret); + case Token::TYPE_KEYWORD: + if (!($this->flags & Token::FLAG_KEYWORD_RESERVED)) { + // Unreserved keywords should stay the way they are because they + // might represent field names. + return $this->token; } - } elseif (($this->flags & Token::FLAG_NUMBER_APPROXIMATE) + return strtoupper($this->token); + case Token::TYPE_WHITESPACE: + return ' '; + case Token::TYPE_BOOL: + return strtoupper($this->token) === 'TRUE'; + case Token::TYPE_NUMBER: + $ret = str_replace('--', '', $this->token); // e.g. ---42 === -42 + if ($this->flags & Token::FLAG_NUMBER_HEX) { + if ($this->flags & Token::FLAG_NUMBER_NEGATIVE) { + $ret = str_replace('-', '', $this->token); + sscanf($ret, "%x", $ret); + $ret = -$ret; + } else { + sscanf($ret, "%x", $ret); + } + } elseif (($this->flags & Token::FLAG_NUMBER_APPROXIMATE) || ($this->flags & Token::FLAG_NUMBER_FLOAT) - ) { - sscanf($ret, "%f", $ret); - } else { - sscanf($ret, "%d", $ret); - } - return $ret; - case Token::TYPE_STRING: - $quote = $this->token[0]; - $str = str_replace($quote . $quote, $quote, $this->token); - return mb_substr($str, 1, -1); // trims quotes - case Token::TYPE_SYMBOL: - $str = $this->token; - if ((isset($str[0])) && ($str[0] === '@')) { - $str = mb_substr($str, 1); - } - if ((isset($str[0])) && (($str[0] === '`') + ) { + sscanf($ret, "%f", $ret); + } else { + sscanf($ret, "%d", $ret); + } + return $ret; + case Token::TYPE_STRING: + $quote = $this->token[0]; + $str = str_replace($quote . $quote, $quote, $this->token); + return mb_substr($str, 1, -1); // trims quotes + case Token::TYPE_SYMBOL: + $str = $this->token; + if ((isset($str[0])) && ($str[0] === '@')) { + $str = mb_substr($str, 1); + } + if ((isset($str[0])) && (($str[0] === '`') || ($str[0] === '"') || ($str[0] === '\'')) - ) { - $quote = $str[0]; - $str = str_replace($quote . $quote, $quote, $str); - $str = mb_substr($str, 1, -1); - } - return $str; + ) { + $quote = $str[0]; + $str = str_replace($quote . $quote, $quote, $str); + $str = mb_substr($str, 1, -1); + } + return $str; } return $this->token; } |