-
Notifications
You must be signed in to change notification settings - Fork 34
Composer integration, PSR coding standards #6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
8b16ece
0beb675
4c93b88
f789346
885350b
67ceddb
3469826
59fde6c
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
.idea |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,147 @@ | ||
<?php | ||
|
||
/** | ||
* PHP 5.4 Short Array Syntax Converter | ||
* | ||
* Command-line script to convert PHP's "array()" syntax to PHP 5.4's | ||
* short array syntax "[]" using PHP's built-in tokenizer. | ||
* | ||
* This script is free software; you can redistribute it and/or | ||
* modify it under the terms of the GNU Lesser General Public | ||
* License (LGPL) as published by the Free Software Foundation; either | ||
* version 3 of the License, or (at your option) any later version. | ||
* | ||
* This script is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
* Lesser General Public License for more details. | ||
* | ||
* You should have received a copy of the GNU Lesser General Public | ||
* License along with this library; if not, write to the Free Software | ||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. | ||
* | ||
* @link https://github.com/thomasbachem/php-short-array-syntax-converter | ||
* | ||
* @link http://php.net/manual/en/language.types.array.php | ||
* | ||
* @license http://www.gnu.org/licenses/lgpl.html | ||
* @author Thomas Bachem <[email protected]> | ||
*/ | ||
|
||
|
||
// - - - - - HANDLE COMMAND LINE ARGUMENTS - - - - - | ||
|
||
$filePath = null; | ||
$saveFile = false; | ||
|
||
if ($argc > 3) { | ||
file_put_contents('php://stderr', 'Usage: php convert.php [-w] <file>' . "\n"); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
||
exit(1); | ||
} | ||
for ($i = 1; $i < $argc; ++$i) { | ||
if ($argv[$i] && $argv[$i][0] == '-') { | ||
$saveFile = ($argv[$i] == '-w'); | ||
} else { | ||
$filePath = $argv[$i]; | ||
} | ||
} | ||
|
||
if (!$filePath) { | ||
file_put_contents('php://stderr', 'Usage: php array-converter.php [-w] <file>' . "\n"); | ||
exit(1); | ||
} elseif (!file_exists($filePath)) { | ||
file_put_contents('php://stderr', 'File "' . $filePath . '" not found.' . "\n"); | ||
exit(1); | ||
} | ||
|
||
|
||
// - - - - - READ ORIGINAL CODE - - - - - | ||
|
||
$code = file_get_contents($filePath); | ||
$tokens = token_get_all($code); | ||
|
||
|
||
// - - - - - PARSE CODE - - - - - | ||
|
||
$replacements = array(); | ||
$offset = 0; | ||
for ($i = 0; $i < count($tokens); ++$i) { | ||
// Keep track of the current byte offset in the source code | ||
$offset += strlen(is_array($tokens[$i]) ? $tokens[$i][1] : $tokens[$i]); | ||
|
||
// T_ARRAY could either mean the "array(...)" syntax we're looking for | ||
// or a type hinting statement ("function(array $foo) { ... }") | ||
if (is_array($tokens[$i]) && $tokens[$i][0] === T_ARRAY) { | ||
// Look for a subsequent opening bracket ("(") to be sure we're actually | ||
// looking at an "array(...)" statement | ||
$isArraySyntax = false; | ||
$subOffset = $offset; | ||
for ($j = $i + 1; $j < count($tokens); ++$j) { | ||
$subOffset += strlen(is_array($tokens[$j]) ? $tokens[$j][1] : $tokens[$j]); | ||
|
||
if (is_string($tokens[$j]) && $tokens[$j] == '(') { | ||
$isArraySyntax = true; | ||
break; | ||
} elseif (!is_array($tokens[$j]) || $tokens[$j][0] !== T_WHITESPACE) { | ||
$isArraySyntax = false; | ||
break; | ||
} | ||
} | ||
|
||
if ($isArraySyntax) { | ||
// Replace "array" and the opening bracket (including preceeding whitespace) with "[" | ||
$replacements[] = array( | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe you could use short syntax array in this short syntax array converter? 😉 |
||
'start' => $offset - strlen($tokens[$i][1]), | ||
'end' => $subOffset, | ||
'string' => '[', | ||
); | ||
|
||
// Look for matching closing bracket (")") | ||
$subOffset = $offset; | ||
$openBracketsCount = 0; | ||
for ($j = $i + 1; $j < count($tokens); ++$j) { | ||
$subOffset += strlen(is_array($tokens[$j]) ? $tokens[$j][1] : $tokens[$j]); | ||
|
||
if (is_string($tokens[$j]) && $tokens[$j] == '(') { | ||
++$openBracketsCount; | ||
} elseif (is_string($tokens[$j]) && $tokens[$j] == ')') { | ||
--$openBracketsCount; | ||
|
||
if ($openBracketsCount == 0) { | ||
// Replace ")" with "]" | ||
$replacements[] = array( | ||
'start' => $subOffset - 1, | ||
'end' => $subOffset, | ||
'string' => ']', | ||
); | ||
break; | ||
} | ||
} | ||
} | ||
} | ||
} | ||
} | ||
|
||
|
||
// - - - - - UPDATE CODE - - - - - | ||
|
||
// Apply the replacements to the source code | ||
$offsetChange = 0; | ||
foreach ($replacements as $replacement) { | ||
$code = substr_replace( | ||
$code, | ||
$replacement['string'], | ||
$replacement['start'] + $offsetChange, | ||
$replacement['end'] - $replacement['start'] | ||
); | ||
$offsetChange += strlen($replacement['string']) - ($replacement['end'] - $replacement['start']); | ||
} | ||
|
||
|
||
// - - - - - OUTPUT/WRITE NEW CODE - - - - - | ||
|
||
if ($saveFile) { | ||
file_put_contents($filePath, $code); | ||
} else { | ||
print $code; | ||
} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. EOF break line missing |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
#!/usr/bin/env php | ||
<?php | ||
|
||
include(__DIR__ . '/../array-converter.php'); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
{ | ||
"name": "thomasbachem/php-short-array-syntax-converter", | ||
"description": "Command-line script to convert PHP's array() syntax to PHP 5.4's short array syntax [] using PHP's built-in tokenizer.", | ||
"type": "library", | ||
"homepage": "https://github.com/a-vasyliev/php-short-array-syntax-converter", | ||
"keywords": [ | ||
"short", | ||
"array", | ||
"converter", | ||
"php" | ||
], | ||
"authors": [ | ||
{ | ||
"name": "Thomas Bachem", | ||
"email": "[email protected]", | ||
"homepage": "http://thomasbachem.com" | ||
}, | ||
{ | ||
"name": "Andrii Vasyliev", | ||
"email": "[email protected]", | ||
"homepage": "http://andrey-vasiliev.com" | ||
} | ||
], | ||
"minimum-stability": "dev", | ||
"require": { | ||
"php": ">=5.4" | ||
}, | ||
"bin": [ | ||
"bin/array-converter" | ||
] | ||
} |
This file was deleted.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Use
git mv
to move this file.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
git mv
might not do what you think it does. He likely made enough changes to the file that it's no longer recognized as a rename.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@evanpurkhiser Thank you)