TextMate - replace associative Array to compact

Assign variables to a Laravel Blade template using an associative Array can be more code efficient when using PHP's compact function. Therefor i needed a script that allows me to manually replace the code into this shorter format:

Before

return View::make('account.edit', [
    'oUser' => $oUser,
    'sTitle' => $sTitle,
]);

After

return View::make('account.edit', compact(
    'oUser',
    'sTitle'
));
  • In TextMate go to Bundles -> Edit Bundles...
  • Press + N
  • Create Bundle
  • Repeat, and create Command
  • Assign a Key Equivalant for quick access (optional)
  • copy-paste the code below:
#!/usr/bin/php
<?php
$a = explode(PHP_EOL, file_get_contents("php://stdin"));
$c = count($a);
$i = 1;
foreach ($a as $s) {
    if ($i == 1) {
        echo str_replace("[", "compact(", $s)."\n";
    } else if ($i == $c) {
        echo str_replace("])", "))", $s);
    } else {
        $pos1 = strpos($s, "'");
        $pos2 = strpos($s, "'", $pos1 + strlen("'"));
        echo substr($s, 0, $pos2)."'";
        if ($i < ($c - 1)) {
            echo ",";
        }
        echo "\n";
    }
    ++$i;
} 
?>
David van der Tuijn
"Mijn naam is David van der Tuijn, als senior php developer bij Floro Webdevelopment B.V. werk ik samen met een projectleider, back-end developers, front-end developers en designers, op basis van een functioneel- (FO) en technisch ontwerp (TO), bouw ik webapplicaties die voldoen aan de nieuwste ontwikkelingen op internet gebied. Ik werk zelfstandig, weet hoe een architectuur opgezet moet worden en kan deze uitdragen in een multidisciplinair team. binnen een project adviseer ik over de juiste methoden en technieken. Ik ontwikkel en bewaak de kwaliteit van de development werkzaamheden in projecten en kan projecten binnen een afgegeven planning afronden."