diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Component.php | 6 | ||||
-rw-r--r-- | src/Components/AlterOperation.php | 4 | ||||
-rw-r--r-- | src/Components/Array2d.php | 5 | ||||
-rw-r--r-- | src/Components/ArrayObj.php | 2 | ||||
-rw-r--r-- | src/Components/CaseExpression.php | 10 | ||||
-rw-r--r-- | src/Components/CreateDefinition.php | 15 | ||||
-rw-r--r-- | src/Components/DataType.php | 2 | ||||
-rw-r--r-- | src/Components/Expression.php | 14 | ||||
-rw-r--r-- | src/Components/ExpressionArray.php | 2 | ||||
-rw-r--r-- | src/Components/Limit.php | 4 | ||||
-rw-r--r-- | src/Components/OptionsArray.php | 5 | ||||
-rw-r--r-- | src/Components/RenameOperation.php | 8 | ||||
-rw-r--r-- | src/Core.php | 51 | ||||
-rw-r--r-- | src/Lexer.php | 50 | ||||
-rw-r--r-- | src/Parser.php | 44 | ||||
-rw-r--r-- | src/Statement.php | 10 | ||||
-rw-r--r-- | src/Statements/CreateStatement.php | 8 | ||||
-rw-r--r-- | src/Statements/DeleteStatement.php | 18 | ||||
-rw-r--r-- | src/Statements/InsertStatement.php | 8 | ||||
-rw-r--r-- | src/Statements/ReplaceStatement.php | 6 | ||||
-rw-r--r-- | src/Translator.php | 69 | ||||
-rw-r--r-- | src/common.php | 21 |
22 files changed, 206 insertions, 156 deletions
diff --git a/src/Component.php b/src/Component.php index 08720cf..43d0fec 100644 --- a/src/Component.php +++ b/src/Component.php @@ -12,8 +12,6 @@ */ namespace SqlParser; -require_once 'common.php'; - /** * A component (of a statement) is a part of a statement that is common to * multiple query types. @@ -44,7 +42,7 @@ abstract class Component ) { // This method should be abstract, but it can't be both static and // abstract. - throw new \Exception(\__('Not implemented yet.')); + throw new \Exception(Translator::gettext('Not implemented yet.')); } /** @@ -64,7 +62,7 @@ abstract class Component { // This method should be abstract, but it can't be both static and // abstract. - throw new \Exception(\__('Not implemented yet.')); + throw new \Exception(Translator::gettext('Not implemented yet.')); } /** diff --git a/src/Components/AlterOperation.php b/src/Components/AlterOperation.php index c2344c6..582ee84 100644 --- a/src/Components/AlterOperation.php +++ b/src/Components/AlterOperation.php @@ -225,7 +225,7 @@ class AlterOperation extends Component if (! ($token->value == 'SET' && $list->tokens[$list->idx - 1]->value == 'CHARACTER')) { $parser->error( - __('A new statement was found, but no delimiter between it and the previous one.'), + 'A new statement was found, but no delimiter between it and the previous one.', $token ); break; @@ -237,7 +237,7 @@ class AlterOperation extends Component if ($ret->options->isEmpty()) { $parser->error( - __('Unrecognized alter operation.'), + 'Unrecognized alter operation.', $list->tokens[$list->idx] ); } diff --git a/src/Components/Array2d.php b/src/Components/Array2d.php index 2199efe..13d2a8f 100644 --- a/src/Components/Array2d.php +++ b/src/Components/Array2d.php @@ -12,6 +12,7 @@ use SqlParser\Component; use SqlParser\Parser; use SqlParser\Token; use SqlParser\TokensList; +use SQLParser\Translator; /** * `VALUES` keyword parser. @@ -88,7 +89,7 @@ class Array2d extends Component } elseif ($arrCount != $count) { $parser->error( sprintf( - __('%1$d values were expected, but found %2$d.'), + Translator::gettext('%1$d values were expected, but found %2$d.'), $count, $arrCount ), @@ -111,7 +112,7 @@ class Array2d extends Component if ($state === 0) { $parser->error( - __('An opening bracket followed by a set of values was expected.'), + 'An opening bracket followed by a set of values was expected.', $list->tokens[$list->idx] ); } diff --git a/src/Components/ArrayObj.php b/src/Components/ArrayObj.php index bed7fc7..d9449f2 100644 --- a/src/Components/ArrayObj.php +++ b/src/Components/ArrayObj.php @@ -115,7 +115,7 @@ class ArrayObj extends Component && (($token->type !== Token::TYPE_OPERATOR) || ($token->value !== '(')) ) { - $parser->error(__('An opening bracket was expected.'), $token); + $parser->error('An opening bracket was expected.', $token); break; } diff --git a/src/Components/CaseExpression.php b/src/Components/CaseExpression.php index df5a1bd..e410aab 100644 --- a/src/Components/CaseExpression.php +++ b/src/Components/CaseExpression.php @@ -134,7 +134,7 @@ class CaseExpression extends Component ++$list->idx; break; } elseif ($token->type === Token::TYPE_KEYWORD) { - $parser->error(__('Unexpected keyword.'), $token); + $parser->error('Unexpected keyword.', $token); break; } else { $ret->value = Expression::parse($parser, $list); @@ -164,7 +164,7 @@ class CaseExpression extends Component ++$list->idx; break; } elseif ($token->type === Token::TYPE_KEYWORD) { - $parser->error(__('Unexpected keyword.'), $token); + $parser->error('Unexpected keyword.', $token); break; } } else { @@ -176,7 +176,7 @@ class CaseExpression extends Component $state = 0; $ret->results[] = $new_result; } elseif ($token->type === Token::TYPE_KEYWORD) { - $parser->error(__('Unexpected keyword.'), $token); + $parser->error('Unexpected keyword.', $token); break; } } @@ -190,7 +190,7 @@ class CaseExpression extends Component $ret->results[] = $new_result; $state = 1; } elseif ($token->type === Token::TYPE_KEYWORD) { - $parser->error(__('Unexpected keyword.'), $token); + $parser->error('Unexpected keyword.', $token); break; } } @@ -199,7 +199,7 @@ class CaseExpression extends Component if ($state !== 3) { $parser->error( - __('Unexpected end of CASE expression'), + 'Unexpected end of CASE expression', $list->tokens[$list->idx - 1] ); } diff --git a/src/Components/CreateDefinition.php b/src/Components/CreateDefinition.php index 86bb315..4fb8c9c 100644 --- a/src/Components/CreateDefinition.php +++ b/src/Components/CreateDefinition.php @@ -203,7 +203,7 @@ class CreateDefinition extends Component $state = 1; } else { $parser->error( - __('An opening bracket was expected.'), + 'An opening bracket was expected.', $token ); break; @@ -224,10 +224,9 @@ class CreateDefinition extends Component // Reserved keywords can't be used // as field names without backquotes $parser->error( - __('A symbol name was expected! ' - . 'A reserved keyword can not be used ' - . 'as a column name without backquotes.' - ), + 'A symbol name was expected! ' + . 'A reserved keyword can not be used ' + . 'as a column name without backquotes.' , $token ); return $ret; @@ -238,7 +237,7 @@ class CreateDefinition extends Component } } else { $parser->error( - __('A symbol name was expected!'), + 'A symbol name was expected!', $token ); return $ret; @@ -270,7 +269,7 @@ class CreateDefinition extends Component break; } else { $parser->error( - __('A comma or a closing bracket was expected.'), + 'A comma or a closing bracket was expected.', $token ); $state = 0; @@ -286,7 +285,7 @@ class CreateDefinition extends Component if (($state !== 0) && ($state !== 6)) { $parser->error( - __('A closing bracket was expected.'), + 'A closing bracket was expected.', $list->tokens[$list->idx - 1] ); } diff --git a/src/Components/DataType.php b/src/Components/DataType.php index 378ec9d..084fb01 100644 --- a/src/Components/DataType.php +++ b/src/Components/DataType.php @@ -124,7 +124,7 @@ class DataType extends Component if ($state === 0) { $ret->name = strtoupper($token->value); if (($token->type !== Token::TYPE_KEYWORD) || (!($token->flags & Token::FLAG_KEYWORD_DATA_TYPE))) { - $parser->error(__('Unrecognized data type.'), $token); + $parser->error('Unrecognized data type.', $token); } $state = 1; } elseif ($state === 1) { diff --git a/src/Components/Expression.php b/src/Components/Expression.php index 7a7a333..569199c 100644 --- a/src/Components/Expression.php +++ b/src/Components/Expression.php @@ -245,7 +245,7 @@ class Expression extends Component } if ($alias) { $parser->error( - __('An alias was expected.'), + 'An alias was expected.', $token ); break; @@ -314,7 +314,7 @@ class Expression extends Component break; } } elseif ($brackets < 0) { - // $parser->error(__('Unexpected closing bracket.'), $token); + // $parser->error('Unexpected closing bracket.', $token); // $brackets = 0; break; } @@ -333,7 +333,7 @@ class Expression extends Component if ($alias) { // An alias is expected (the keyword `AS` was previously found). if (!empty($ret->alias)) { - $parser->error(__('An alias was previously found.'), $token); + $parser->error('An alias was previously found.', $token); break; } $ret->alias = $token->value; @@ -352,7 +352,7 @@ class Expression extends Component || ($prev[1]->type === Token::TYPE_NONE)) ) { if (!empty($ret->alias)) { - $parser->error(__('An alias was previously found.'), $token); + $parser->error('An alias was previously found.', $token); break; } $ret->alias = $prev[1]->value; @@ -365,7 +365,7 @@ class Expression extends Component // the column name we parsed is actually the table name // and the table name is actually a database name. if ((!empty($ret->database)) || ($dot)) { - $parser->error(__('Unexpected dot.'), $token); + $parser->error('Unexpected dot.', $token); } $ret->database = $ret->table; $ret->table = $ret->column; @@ -384,7 +384,7 @@ class Expression extends Component break; } if (!empty($ret->alias)) { - $parser->error(__('An alias was previously found.'), $token); + $parser->error('An alias was previously found.', $token); break; } $ret->alias = $token->value; @@ -395,7 +395,7 @@ class Expression extends Component if ($alias) { $parser->error( - __('An alias was expected.'), + 'An alias was expected.', $list->tokens[$list->idx - 1] ); } diff --git a/src/Components/ExpressionArray.php b/src/Components/ExpressionArray.php index e2aa86e..1bfce74 100644 --- a/src/Components/ExpressionArray.php +++ b/src/Components/ExpressionArray.php @@ -103,7 +103,7 @@ class ExpressionArray extends Component if ($state === 0) { $parser->error( - __('An expression was expected.'), + 'An expression was expected.', $list->tokens[$list->idx] ); } diff --git a/src/Components/Limit.php b/src/Components/Limit.php index 13a1127..434b9f8 100644 --- a/src/Components/Limit.php +++ b/src/Components/Limit.php @@ -87,7 +87,7 @@ class Limit extends Component if (($token->type === Token::TYPE_KEYWORD) && ($token->value === 'OFFSET')) { if ($offset) { - $parser->error(__('An offset was expected.'), $token); + $parser->error('An offset was expected.', $token); } $offset = true; continue; @@ -109,7 +109,7 @@ class Limit extends Component if ($offset) { $parser->error( - __('An offset was expected.'), + 'An offset was expected.', $list->tokens[$list->idx - 1] ); } diff --git a/src/Components/OptionsArray.php b/src/Components/OptionsArray.php index 315237f..94b7f66 100644 --- a/src/Components/OptionsArray.php +++ b/src/Components/OptionsArray.php @@ -12,6 +12,7 @@ use SqlParser\Component; use SqlParser\Parser; use SqlParser\Token; use SqlParser\TokensList; +use SQLParser\Translator; /** * Parses a list of options. @@ -143,7 +144,7 @@ class OptionsArray extends Component if (isset($ret->options[$lastOptionId])) { $parser->error( sprintf( - __('This option conflicts with "%1$s".'), + Translator::gettext('This option conflicts with "%1$s".'), is_array($ret->options[$lastOptionId]) ? $ret->options[$lastOptionId]['name'] : $ret->options[$lastOptionId] @@ -257,7 +258,7 @@ class OptionsArray extends Component ) { $parser->error( sprintf( - __('Value/Expression for the option %1$s was expected.'), + 'Value/Expression for the option %1$s was expected.', $ret->options[$lastOptionId]['name'] ), $list->tokens[$list->idx - 1] diff --git a/src/Components/RenameOperation.php b/src/Components/RenameOperation.php index 291bd43..9f6b1b4 100644 --- a/src/Components/RenameOperation.php +++ b/src/Components/RenameOperation.php @@ -98,7 +98,7 @@ class RenameOperation extends Component ); if (empty($expr->old)) { $parser->error( - __('The old name of the table was expected.'), + 'The old name of the table was expected.', $token ); } @@ -108,7 +108,7 @@ class RenameOperation extends Component $state = 2; } else { $parser->error( - __('Keyword "TO" was expected.'), + 'Keyword "TO" was expected.', $token ); break; @@ -124,7 +124,7 @@ class RenameOperation extends Component ); if (empty($expr->new)) { $parser->error( - __('The new name of the table was expected.'), + 'The new name of the table was expected.', $token ); } @@ -142,7 +142,7 @@ class RenameOperation extends Component if ($state !== 3) { $parser->error( - __('A rename operation was expected.'), + 'A rename operation was expected.', $list->tokens[$list->idx - 1] ); } diff --git a/src/Core.php b/src/Core.php new file mode 100644 index 0000000..2cb15cc --- /dev/null +++ b/src/Core.php @@ -0,0 +1,51 @@ +<?php + +/** + * Defines the core helper infrastructure of the library. + * + * @package SqlParser + */ +namespace SqlParser; + +class Core +{ + + /** + * Whether errors should throw exceptions or just be stored. + * + * @var bool + * + * @see static::$errors + */ + public $strict = false; + + /** + * List of errors that occurred during lexing. + * + * Usually, the lexing does not stop once an error occurred because that + * error might be false positive or a partial result (even a bad one) + * might be needed. + * + * @var Exception[] + * + * @see Core::error() + */ + public $errors = array(); + + /** + * Creates a new error log. + * + * @param Exception $error The error exception. + * + * @throws Exception Throws the exception, if strict mode is enabled. + * + * @return void + */ + public function error($error) + { + if ($this->strict) { + throw $error; + } + $this->errors[] = $error; + } +} diff --git a/src/Lexer.php b/src/Lexer.php index 9de2a7a..8aceb42 100644 --- a/src/Lexer.php +++ b/src/Lexer.php @@ -11,8 +11,6 @@ */ namespace SqlParser; -require_once 'common.php'; - use SqlParser\Exceptions\LexerException; if (!defined('USE_UTF_STRINGS')) { @@ -41,7 +39,7 @@ if (!defined('USE_UTF_STRINGS')) { * @license https://www.gnu.org/licenses/gpl-2.0.txt GPL-2.0+ * @see Context */ -class Lexer +class Lexer extends Core { /** @@ -80,15 +78,6 @@ class Lexer ); /** - * Whether errors should throw exceptions or just be stored. - * - * @var bool - * - * @see static::$errors - */ - public $strict = false; - - /** * The string to be parsed. * * @var string|UtfString @@ -146,19 +135,6 @@ class Lexer public $delimiterLen; /** - * List of errors that occurred during lexing. - * - * Usually, the lexing does not stop once an error occurred because that - * error might be false positive or a partial result (even a bad one) - * might be needed. - * - * @var LexerException[] - * - * @see Lexer::error() - */ - public $errors = array(); - - /** * Gets the tokens list parsed by a new instance of a lexer. * * @param string|UtfString $str The query to be lexed. @@ -263,7 +239,7 @@ class Lexer // @assert($this->last === $lastIdx); $token = new Token($this->str[$this->last]); $this->error( - __('Unexpected character.'), + 'Unexpected character.', $this->str[$this->last], $this->last ); @@ -300,7 +276,7 @@ class Lexer if (($token->type === Token::TYPE_NONE) && ($token->value === 'DELIMITER')) { if ($this->last + 1 >= $this->len) { $this->error( - __('Expected whitespace(s) before delimiter.'), + 'Expected whitespace(s) before delimiter.', '', $this->last + 1 ); @@ -318,7 +294,7 @@ class Lexer // Preparing the token that holds the new delimiter. if ($this->last + 1 >= $this->len) { $this->error( - __('Expected delimiter.'), + 'Expected delimiter.', '', $this->last + 1 ); @@ -334,7 +310,7 @@ class Lexer if (empty($this->delimiter)) { $this->error( - __('Expected delimiter.'), + 'Expected delimiter.', '', $this->last ); @@ -372,13 +348,13 @@ class Lexer * * @return void */ - public function error($msg = '', $str = '', $pos = 0, $code = 0) + public function error($msg, $str = '', $pos = 0, $code = 0) { - $error = new LexerException($msg, $str, $pos, $code); - if ($this->strict) { - throw $error; - } - $this->errors[] = $error; + $error = new LexerException( + Translator::gettext($msg), + $str, $pos, $code + ); + parent::error($error); } /** @@ -835,7 +811,7 @@ class Lexer if (($this->last >= $this->len) || ($this->str[$this->last] !== $quote)) { $this->error( sprintf( - __('Ending quote %1$s was expected.'), + Translator::gettext('Ending quote %1$s was expected.'), $quote ), '', @@ -875,7 +851,7 @@ class Lexer if (($str = $this->parseString('`')) === null) { if (($str = static::parseUnknown()) === null) { $this->error( - __('Variable name was expected.'), + 'Variable name was expected.', $this->str[$this->last], $this->last ); diff --git a/src/Parser.php b/src/Parser.php index ddefc7e..e5c09f3 100644 --- a/src/Parser.php +++ b/src/Parser.php @@ -9,8 +9,6 @@ */ namespace SqlParser; -require_once 'common.php'; - use SqlParser\Exceptions\ParserException; use SqlParser\Statements\SelectStatement; use SqlParser\Statements\TransactionStatement; @@ -23,7 +21,7 @@ use SqlParser\Statements\TransactionStatement; * @package SqlParser * @license https://www.gnu.org/licenses/gpl-2.0.txt GPL-2.0+ */ -class Parser +class Parser extends Core { /** @@ -319,28 +317,6 @@ class Parser public $list; /** - * Whether errors should throw exceptions or just be stored. - * - * @var bool - * - * @see static::$errors - */ - public $strict = false; - - /** - * List of errors that occurred during parsing. - * - * Usually, the parsing does not stop once an error occurred because that - * error might be a false positive or a partial result (even a bad one) - * might be needed. - * - * @var ParserException[] - * - * @see Parser::error() - */ - public $errors = array(); - - /** * List of statements parsed. * * @var Statement[] @@ -453,7 +429,7 @@ class Parser && ($token->type !== Token::TYPE_DELIMITER) ) { $this->error( - __('Unexpected beginning of statement.'), + 'Unexpected beginning of statement.', $token ); } @@ -472,7 +448,7 @@ class Parser // is aware that it is a statement, but it does not have // a parser for it yet. $this->error( - __('Unrecognized statement type.'), + 'Unrecognized statement type.', $token ); } @@ -557,7 +533,7 @@ class Parser // saved. $this->statements[] = $statement; $this->error( - __('No transaction was previously started.'), + 'No transaction was previously started.', $token ); } else { @@ -596,12 +572,12 @@ class Parser * * @return void */ - public function error($msg = '', Token $token = null, $code = 0) + public function error($msg, Token $token = null, $code = 0) { - $error = new ParserException($msg, $token, $code); - if ($this->strict) { - throw $error; - } - $this->errors[] = $error; + $error = new ParserException( + Translator::gettext($msg), + $token, $code + ); + parent::error($error); } } diff --git a/src/Statement.php b/src/Statement.php index e3e5968..a0a2b17 100644 --- a/src/Statement.php +++ b/src/Statement.php @@ -242,7 +242,7 @@ abstract class Statement if (($token->type !== TOKEN::TYPE_COMMENT) && ($token->type !== Token::TYPE_WHITESPACE) ) { - $parser->error(__('Unexpected token.'), $token); + $parser->error('Unexpected token.', $token); } continue; } @@ -306,7 +306,7 @@ abstract class Statement ) { if (!empty($parsedClauses[$token->value])) { $parser->error( - __('This type of clause was previously parsed.'), + 'This type of clause was previously parsed.', $token ); break; @@ -334,7 +334,7 @@ abstract class Statement // this statement it means it is a new statement, but no // delimiter was found between them. $parser->error( - __('A new statement was found, but no delimiter between it and the previous one.'), + 'A new statement was found, but no delimiter between it and the previous one.', $token ); break; @@ -366,7 +366,7 @@ abstract class Statement } else { // There is no parser for this keyword and isn't the beginning // of a statement (so no options) either. - $parser->error(__('Unrecognized keyword.'), $token); + $parser->error('Unrecognized keyword.', $token); continue; } } @@ -492,7 +492,7 @@ abstract class Statement if ($joinStart == 0 || ($joinStart == 2 && $error = 1)) { $token = $list->tokens[$clauseStartIdx]; $parser->error( - __('Unexpected ordering of clauses.'), + 'Unexpected ordering of clauses.', $token ); return false; diff --git a/src/Statements/CreateStatement.php b/src/Statements/CreateStatement.php index ed13952..6eeb41f 100644 --- a/src/Statements/CreateStatement.php +++ b/src/Statements/CreateStatement.php @@ -378,7 +378,7 @@ class CreateStatement extends Statement if ((!isset($this->name)) || ($this->name === '')) { $parser->error( - __('The name of the entity was expected.'), + 'The name of the entity was expected.', $list->tokens[$list->idx] ); } else { @@ -433,7 +433,7 @@ class CreateStatement extends Statement // The 'LIKE' keyword was found, but no table_name was found next to it if ($this->like == null) { $parser->error( - __('A table name was expected.'), + 'A table name was expected.', $list->tokens[$list->idx] ); } @@ -441,7 +441,7 @@ class CreateStatement extends Statement $this->fields = CreateDefinition::parse($parser, $list); if (empty($this->fields)) { $parser->error( - __('At least one column definition was expected.'), + 'At least one column definition was expected.', $list->tokens[$list->idx] ); } @@ -552,7 +552,7 @@ class CreateStatement extends Statement $token = $list->getNextOfType(Token::TYPE_KEYWORD); if ($token->value !== 'RETURNS') { $parser->error( - __('A "RETURNS" keyword was expected.'), + 'A "RETURNS" keyword was expected.', $token ); } else { diff --git a/src/Statements/DeleteStatement.php b/src/Statements/DeleteStatement.php index d83d0e9..e86f4ec 100644 --- a/src/Statements/DeleteStatement.php +++ b/src/Statements/DeleteStatement.php @@ -222,7 +222,7 @@ class DeleteStatement extends Statement if ($token->type === Token::TYPE_KEYWORD && $token->value !== 'FROM' ) { - $parser->error(__('Unexpected keyword.'), $token); + $parser->error('Unexpected keyword.', $token); break; } elseif ($token->type === Token::TYPE_KEYWORD && $token->value === 'FROM' @@ -238,7 +238,7 @@ class DeleteStatement extends Statement if ($token->type === Token::TYPE_KEYWORD && $token->value !== 'FROM' ) { - $parser->error(__('Unexpected keyword.'), $token); + $parser->error('Unexpected keyword.', $token); break; } elseif ($token->type === Token::TYPE_KEYWORD && $token->value === 'FROM' @@ -247,7 +247,7 @@ class DeleteStatement extends Statement $this->from = ExpressionArray::parse($parser, $list); $state = 2; } else { - $parser->error(__('Unexpected token.'), $token); + $parser->error('Unexpected token.', $token); break; } } elseif ($state === 2) { @@ -278,7 +278,7 @@ class DeleteStatement extends Statement $this->limit = Limit::parse($parser, $list); $state = 6; } elseif ($token->type === Token::TYPE_KEYWORD) { - $parser->error(__('Unexpected keyword.'), $token); + $parser->error('Unexpected keyword.', $token); break; } } elseif ($state === 3) { @@ -289,10 +289,10 @@ class DeleteStatement extends Statement $this->where = Condition::parse($parser, $list); $state = 4; } elseif ($token->type === Token::TYPE_KEYWORD) { - $parser->error(__('Unexpected keyword.'), $token); + $parser->error('Unexpected keyword.', $token); break; } else { - $parser->error(__('Unexpected token.'), $token); + $parser->error('Unexpected token.', $token); break; } } elseif ($state === 4) { @@ -300,7 +300,7 @@ class DeleteStatement extends Statement && $token->type === Token::TYPE_KEYWORD ) { $parser->error( - __('This type of clause is not valid in Multi-table queries.'), + 'This type of clause is not valid in Multi-table queries.', $token ); break; @@ -319,7 +319,7 @@ class DeleteStatement extends Statement $this->limit = Limit::parse($parser, $list); $state = 6; } elseif ($token->type === Token::TYPE_KEYWORD) { - $parser->error(__('Unexpected keyword.'), $token); + $parser->error('Unexpected keyword.', $token); break; } } elseif ($state === 5) { @@ -330,7 +330,7 @@ class DeleteStatement extends Statement $this->limit = Limit::parse($parser, $list); $state = 6; } elseif ($token->type === Token::TYPE_KEYWORD) { - $parser->error(__('Unexpected keyword.'), $token); + $parser->error('Unexpected keyword.', $token); break; } } diff --git a/src/Statements/InsertStatement.php b/src/Statements/InsertStatement.php index 9db1a44..1e760ff 100644 --- a/src/Statements/InsertStatement.php +++ b/src/Statements/InsertStatement.php @@ -196,7 +196,7 @@ class InsertStatement extends Statement if ($token->type === Token::TYPE_KEYWORD && $token->value !== 'INTO' ) { - $parser->error(__('Unexpected keyword.'), $token); + $parser->error('Unexpected keyword.', $token); break; } else { ++$list->idx; @@ -224,7 +224,7 @@ class InsertStatement extends Statement $this->select = new SelectStatement($parser, $list); } else { $parser->error( - __('Unexpected keyword.'), + 'Unexpected keyword.', $token ); break; @@ -233,7 +233,7 @@ class InsertStatement extends Statement $miniState = 1; } else { $parser->error( - __('Unexpected token.'), + 'Unexpected token.', $token ); break; @@ -253,7 +253,7 @@ class InsertStatement extends Statement if ($lastCount === $miniState) { $parser->error( - __('Unexpected token.'), + 'Unexpected token.', $token ); break; diff --git a/src/Statements/ReplaceStatement.php b/src/Statements/ReplaceStatement.php index 0e85507..d03cf5c 100644 --- a/src/Statements/ReplaceStatement.php +++ b/src/Statements/ReplaceStatement.php @@ -162,7 +162,7 @@ class ReplaceStatement extends Statement if ($token->type === Token::TYPE_KEYWORD && $token->value !== 'INTO' ) { - $parser->error(__('Unexpected keyword.'), $token); + $parser->error('Unexpected keyword.', $token); break; } else { ++$list->idx; @@ -190,7 +190,7 @@ class ReplaceStatement extends Statement $this->select = new SelectStatement($parser, $list); } else { $parser->error( - __('Unexpected keyword.'), + 'Unexpected keyword.', $token ); break; @@ -198,7 +198,7 @@ class ReplaceStatement extends Statement $state = 2; } else { $parser->error( - __('Unexpected token.'), + 'Unexpected token.', $token ); break; diff --git a/src/Translator.php b/src/Translator.php new file mode 100644 index 0000000..c6a1d3d --- /dev/null +++ b/src/Translator.php @@ -0,0 +1,69 @@ +<?php + +/** + * Defines the localization helper infrastructure of the library. + * + * @package SqlParser + */ +namespace SqlParser; + +use MoTranslator; + +class Translator +{ + /** + * The MoTranslator loader object. + * + * @var MoTranslator\Loader + */ + private static $loader; + + /** + * The MoTranslator translator object. + * + * @var MoTranslator\Translator + */ + private static $translator; + + /** + * Loads transator + * + * @return void + */ + public static function load() + { + if (is_null(self::$loader)) { + // Create loader object + self::$loader = new MoTranslator\Loader(); + + // Set locale + self::$loader->setlocale( + self::$loader->detectlocale() + ); + + // Set default text domain + self::$loader->textdomain('sqlparser'); + + // Set path where to look for a domain + self::$loader->bindtextdomain('sqlparser', __DIR__ . '/../locale/'); + } + + if (is_null(self::$translator)) { + // Get translator + self::$translator = self::$loader->get_translator(); + } + } + + /** + * Translates a string + * + * @param string $msgid String to be translated + * + * @return string translated string (or original, if not found) + */ + public static function gettext($msgid) + { + self::load(); + return self::$translator->gettext($msgid); + } +} diff --git a/src/common.php b/src/common.php deleted file mode 100644 index 3575c24..0000000 --- a/src/common.php +++ /dev/null @@ -1,21 +0,0 @@ -<?php - -/** - * Defines common elements used by the library. - * - * @package SqlParser - */ - -if (!function_exists('__')) { - /** - * Translates the given string. - * - * @param string $str String to be translated. - * - * @return string - */ - function __($str) - { - return $str; - } -} |