diff options
author | Dan Ungureanu <udan1107@gmail.com> | 2015-08-14 00:16:12 +0300 |
---|---|---|
committer | Dan Ungureanu <udan1107@gmail.com> | 2015-08-14 00:19:48 +0300 |
commit | 09a7047bf51de1d733dd95674f083c1e11c656e1 (patch) | |
tree | 6a9dbc92d7d4390ecae7cf0776dd6cb20fecef06 /src/Components | |
parent | a36dbf270118af42e09b223957ed0d96f6ac0ed9 (diff) | |
download | sql-parser-09a7047bf51de1d733dd95674f083c1e11c656e1.zip sql-parser-09a7047bf51de1d733dd95674f083c1e11c656e1.tar.gz sql-parser-09a7047bf51de1d733dd95674f083c1e11c656e1.tar.bz2 |
Finished builders for components.
Diffstat (limited to 'src/Components')
-rw-r--r-- | src/Components/Array2d.php | 10 | ||||
-rw-r--r-- | src/Components/ArrayObj.php | 22 | ||||
-rw-r--r-- | src/Components/IntoKeyword.php | 16 | ||||
-rw-r--r-- | src/Components/RenameOperation.php | 21 |
4 files changed, 61 insertions, 8 deletions
diff --git a/src/Components/Array2d.php b/src/Components/Array2d.php index c53c8be..c616fdb 100644 --- a/src/Components/Array2d.php +++ b/src/Components/Array2d.php @@ -118,4 +118,14 @@ class Array2d extends Component --$list->idx; return $ret; } + + /** + * @param ArrayObj[] $component The component to be built. + * + * @return string + */ + public static function build($component) + { + return ArrayObj::build($component); + } } diff --git a/src/Components/ArrayObj.php b/src/Components/ArrayObj.php index 8dde518..ef0f79f 100644 --- a/src/Components/ArrayObj.php +++ b/src/Components/ArrayObj.php @@ -133,20 +133,28 @@ class ArrayObj extends Component } /** - * @param ArrayObj $component The component to be built. + * @param ArrayObj|ArrayObj[] $component The component to be built. * * @return string */ public static function build($component) { - $values = array(); - if (!empty($component->raw)) { - $values = $component->raw; + if (is_array($component)) { + $values = array(); + foreach ($component as $c) { + $values[] = static::build($c); + } + return implode(', ', $values); } else { - foreach ($component->values as $value) { - $values[] = $value; + $values = array(); + if (!empty($component->raw)) { + $values = $component->raw; + } else { + foreach ($component->values as $value) { + $values[] = $value; + } } + return '(' . implode(', ', $values) . ')'; } - return '(' . implode(', ', $values) . ')'; } } diff --git a/src/Components/IntoKeyword.php b/src/Components/IntoKeyword.php index cb25481..9b52c7c 100644 --- a/src/Components/IntoKeyword.php +++ b/src/Components/IntoKeyword.php @@ -128,4 +128,20 @@ class IntoKeyword extends Component --$list->idx; return $ret; } + + /** + * @param IntoKeyword $component The component to be built. + * + * @return string + */ + public static function build($component) + { + if ($component->type === 'OUTFILE') { + return 'OUTFILE "' . $component->dest . '"'; + } else { + $columns = !empty($component->columns) ? + '(' . implode(', ', $component->columns) . ')' : ''; + return Expression::build($component->dest) . $columns; + } + } } diff --git a/src/Components/RenameOperation.php b/src/Components/RenameOperation.php index 7d115fb..cc9630c 100644 --- a/src/Components/RenameOperation.php +++ b/src/Components/RenameOperation.php @@ -44,7 +44,7 @@ class RenameOperation extends Component * @param TokensList $list The list of tokens that are being parsed. * @param array $options Parameters for parsing. * - * @return RenameOperation + * @return RenameOperation[] */ public static function parse(Parser $parser, TokensList $list, array $options = array()) { @@ -157,4 +157,23 @@ class RenameOperation extends Component --$list->idx; return $ret; } + + /** + * @param RenameOperation $component The component to be built. + * + * @return string + */ + public static function build($component) + { + if (is_array($component)) { + $values = array(); + foreach ($component as $c) { + $values[] = static::build($c); + } + return implode(', ', $values); + } else { + return Expression::build($component->old) . ' TO ' + . Expression::build($component->new); + } + } } |