PHP Beautifier

Sparat under: Webblog
24/9 09:23, (läst 69 gånger)

/SND/2008/09/24/09/BBEdit.png
Jag använder BBEdit som min texteditor och det finns en funktion som den saknar, och det är möjligheten att re-indentera koden. Det betyder alltså att säga åt editorn att sätta in tabbar och sådant där det ska vara för att koden ska flyta snyggt i textmassan, if-satser och sådant ska positioneras på rätt sätt och sådant. Men det finns däremot ett väldigt bra PHP-bibliotek som heter PHP Beautifier (som också kräver att du har PEAR-paketet installerat) som kan göra detta automatiskt och efter vissa givna regler. Så hur använder man detta i BBEdit då? Ja, det är riktigt enkelt. Använd det här scriptet:
<?  error_reporting(E_ALL|E_STRICT); require_once ('PHP/Beautifier.php'); require_once ('PHP/Beautifier/Batch.php'); if ($argv #0000BB\">1) {     try {         $beauty = new PHP_Beautifier();         $batch = new PHP_Beautifier_Batch($beauty);         $batch->addFilter('ArrayNested');         $batch->setIndentChar("    ");         $batch->setIndentNumber(1);         $batch->addFilter('IndentStyles', array('style' => 'k&r'));         $batch->setInputFile($argv #0000BB\">1);         $batch->process();         print trim($batch->get());     }     catch(Exception $exp) {         echo ($exp);     } }  ?>

Vad scriptet gör att den går igenom $argv[1] och snyggar till den efter givna regler, och i det här fallet så använder den stilen "k&r" vilket är en förkortning av Kernighan & Ritchie och är en indenteringstil som passar mig och ser i regel ut så här:
  1. if (cond) {
  2.    # do...
  3. }

Jag säger också åt den att indentera med 1 tabb. Sen kan man välja att köra med filtret "ArrayNested" och det är en smaksak, men det gör om en array som ser ut så här:
<? $apa = array("utter""giraff""elefant""ostrich"); ?>

Till detta:
<? $apa = array(     "utter",     "giraff",     "elefant",     "ostrich" ); ?>

Men det kan också skapa problem, där sådan här kod:
<? if (in_array($apa, array("one""two""three"))){     # do stuff... ?>

Blir detta:
<? if (in_array($apa, array(     "one",     "two",     "three" ))) {     # do stuff... ?>

Vilket kan se rörigt ut, men du får själv avgöra om du vill använda den med andra ord.

/SND/2008/09/24/09/palette.pngBBEdit?
Ja, hur använder du då detta i BBEdit? Jo, spara ovanstående script i BBEdits unix filter-mapp (i menyn: #!->Unix Filters->Open filters folder) och sedan öppnar du filter-listans fönster (Windows->Palettes->Unix filters) och där kan du sätta ett kortkommando för scriptet. Sen är BBEdit så himla smart när den kör PHP-script att den markering du har i ditt aktiva fönstret (eller hela dokumentet om ingen markering finns) stoppas i $argv[1] så parsningen sker per automatik och allt ser himla snyggt ut helt enkelt.

Kommentarer
0 kommentarer