stylize.php and fix whitespace for JSMin.php
authorAryeh Gregor <simetrical@users.mediawiki.org>
Fri, 29 Jan 2010 00:02:57 +0000 (00:02 +0000)
committerAryeh Gregor <simetrical@users.mediawiki.org>
Fri, 29 Jan 2010 00:02:57 +0000 (00:02 +0000)
Two spaces were being used for indentation instead of a tab, and for
some reason stylize.php didn't fix that, but repeated
s/^\(\(  \)*\)  /\1\t/ worked.

includes/JSMin.php

index 3c2f859..fb97e98 100644 (file)
  */
 
 class JSMin {
-  const ORD_LF    = 10;
-  const ORD_SPACE = 32;
-
-  protected $a           = '';
-  protected $b           = '';
-  protected $input       = '';
-  protected $inputIndex  = 0;
-  protected $inputLength = 0;
-  protected $lookAhead   = null;
-  protected $output      = '';
-
-  // -- Public Static Methods --------------------------------------------------
-
-  public static function minify($js) {
-    $jsmin = new JSMin($js);
-    return $jsmin->min();
-  }
-
-  // -- Public Instance Methods ------------------------------------------------
-
-  public function __construct($input) {
-    $this->input       = str_replace("\r\n", "\n", $input);
-    $this->inputLength = strlen($this->input);
-  }
-
-  // -- Protected Instance Methods ---------------------------------------------
-
-  protected function action($d) {
-    switch($d) {
-      case 1:
-        $this->output .= $this->a;
-
-      case 2:
-        $this->a = $this->b;
-
-        if ($this->a === "'" || $this->a === '"') {
-          for (;;) {
-            $this->output .= $this->a;
-            $this->a       = $this->get();
-
-            if ($this->a === $this->b) {
-              break;
-            }
-
-            if (ord($this->a) <= self::ORD_LF) {
-              throw new JSMinException('Unterminated string literal.');
-            }
-
-            if ($this->a === '\\') {
-              $this->output .= $this->a;
-              $this->a       = $this->get();
-            }
-          }
-        }
-
-      case 3:
-        $this->b = $this->next();
-
-        if ($this->b === '/' && (
-            $this->a === '(' || $this->a === ',' || $this->a === '=' ||
-            $this->a === ':' || $this->a === '[' || $this->a === '!' ||
-            $this->a === '&' || $this->a === '|' || $this->a === '?')) {
-
-          $this->output .= $this->a . $this->b;
-
-          for (;;) {
-            $this->a = $this->get();
-
-            if ($this->a === '/') {
-              break;
-            } elseif ($this->a === '\\') {
-              $this->output .= $this->a;
-              $this->a       = $this->get();
-            } elseif (ord($this->a) <= self::ORD_LF) {
-              throw new JSMinException('Unterminated regular expression '.
-                  'literal.');
-            }
-
-            $this->output .= $this->a;
-          }
-
-          $this->b = $this->next();
-        }
-    }
-  }
-
-  protected function get() {
-    $c = $this->lookAhead;
-    $this->lookAhead = null;
-
-    if ($c === null) {
-      if ($this->inputIndex < $this->inputLength) {
-        $c = substr($this->input, $this->inputIndex, 1);
-        $this->inputIndex += 1;
-      } else {
-        $c = null;
-      }
-    }
-
-    if ($c === "\r") {
-      return "\n";
-    }
-
-    if ($c === null || $c === "\n" || ord($c) >= self::ORD_SPACE) {
-      return $c;
-    }
-
-    return ' ';
-  }
-
-  protected function isAlphaNum($c) {
-    return ord($c) > 126 || $c === '\\' || preg_match('/^[\w\$]$/', $c) === 1;
-  }
-
-  protected function min() {
-    $this->a = "\n";
-    $this->action(3);
-
-    while ($this->a !== null) {
-      switch ($this->a) {
-        case ' ':
-          if ($this->isAlphaNum($this->b)) {
-            $this->action(1);
-          } else {
-            $this->action(2);
-          }
-          break;
-
-        case "\n":
-          switch ($this->b) {
-            case '{':
-            case '[':
-            case '(':
-            case '+':
-            case '-':
-              $this->action(1);
-              break;
-
-            case ' ':
-              $this->action(3);
-              break;
-
-            default:
-              if ($this->isAlphaNum($this->b)) {
-                $this->action(1);
-              }
-              else {
-                $this->action(2);
-              }
-          }
-          break;
-
-        default:
-          switch ($this->b) {
-            case ' ':
-              if ($this->isAlphaNum($this->a)) {
-                $this->action(1);
-                break;
-              }
-
-              $this->action(3);
-              break;
-
-            case "\n":
-              switch ($this->a) {
-                case '}':
-                case ']':
-                case ')':
-                case '+':
-                case '-':
-                case '"':
-                case "'":
-                  $this->action(1);
-                  break;
-
-                default:
-                  if ($this->isAlphaNum($this->a)) {
-                    $this->action(1);
-                  }
-                  else {
-                    $this->action(3);
-                  }
-              }
-              break;
-
-            default:
-              $this->action(1);
-              break;
-          }
-      }
-    }
-
-    return $this->output;
-  }
-
-  protected function next() {
-    $c = $this->get();
-
-    if ($c === '/') {
-      switch($this->peek()) {
-        case '/':
-          for (;;) {
-            $c = $this->get();
-
-            if (ord($c) <= self::ORD_LF) {
-              return $c;
-            }
-          }
-
-        case '*':
-          $this->get();
-
-          for (;;) {
-            switch($this->get()) {
-              case '*':
-                if ($this->peek() === '/') {
-                  $this->get();
-                  return ' ';
-                }
-                break;
-
-              case null:
-                throw new JSMinException('Unterminated comment.');
-            }
-          }
-
-        default:
-          return $c;
-      }
-    }
-
-    return $c;
-  }
-
-  protected function peek() {
-    $this->lookAhead = $this->get();
-    return $this->lookAhead;
-  }
+       const ORD_LF    = 10;
+       const ORD_SPACE = 32;
+
+       protected $a           = '';
+       protected $b           = '';
+       protected $input       = '';
+       protected $inputIndex  = 0;
+       protected $inputLength = 0;
+       protected $lookAhead   = null;
+       protected $output      = '';
+
+       // -- Public Static Methods --------------------------------------------------
+
+       public static function minify( $js ) {
+               $jsmin = new JSMin( $js );
+               return $jsmin->min();
+       }
+
+       // -- Public Instance Methods ------------------------------------------------
+
+       public function __construct( $input ) {
+               $this->input       = str_replace( "\r\n", "\n", $input );
+               $this->inputLength = strlen( $this->input );
+       }
+
+       // -- Protected Instance Methods ---------------------------------------------
+
+       protected function action( $d ) {
+               switch( $d ) {
+                       case 1:
+                               $this->output .= $this->a;
+
+                       case 2:
+                               $this->a = $this->b;
+
+                               if ( $this->a === "'" || $this->a === '"' ) {
+                                       for ( ; ; ) {
+                                               $this->output .= $this->a;
+                                               $this->a       = $this->get();
+
+                                               if ( $this->a === $this->b ) {
+                                                       break;
+                                               }
+
+                                               if ( ord( $this->a ) <= self::ORD_LF ) {
+                                                       throw new JSMinException( 'Unterminated string literal.' );
+                                               }
+
+                                               if ( $this->a === '\\' ) {
+                                                       $this->output .= $this->a;
+                                                       $this->a       = $this->get();
+                                               }
+                                       }
+                               }
+
+                       case 3:
+                               $this->b = $this->next();
+
+                               if ( $this->b === '/' && (
+                                               $this->a === '(' || $this->a === ',' || $this->a === '=' ||
+                                               $this->a === ':' || $this->a === '[' || $this->a === '!' ||
+                                               $this->a === '&' || $this->a === '|' || $this->a === '?' ) ) {
+
+                                       $this->output .= $this->a . $this->b;
+
+                                       for ( ; ; ) {
+                                               $this->a = $this->get();
+
+                                               if ( $this->a === '/' ) {
+                                                       break;
+                                               } elseif ( $this->a === '\\' ) {
+                                                       $this->output .= $this->a;
+                                                       $this->a       = $this->get();
+                                               } elseif ( ord( $this->a ) <= self::ORD_LF ) {
+                                                       throw new JSMinException( 'Unterminated regular expression ' .
+                                                                       'literal.' );
+                                               }
+
+                                               $this->output .= $this->a;
+                                       }
+
+                                       $this->b = $this->next();
+                               }
+               }
+       }
+
+       protected function get() {
+               $c = $this->lookAhead;
+               $this->lookAhead = null;
+
+               if ( $c === null ) {
+                       if ( $this->inputIndex < $this->inputLength ) {
+                               $c = substr( $this->input, $this->inputIndex, 1 );
+                               $this->inputIndex += 1;
+                       } else {
+                               $c = null;
+                       }
+               }
+
+               if ( $c === "\r" ) {
+                       return "\n";
+               }
+
+               if ( $c === null || $c === "\n" || ord( $c ) >= self::ORD_SPACE ) {
+                       return $c;
+               }
+
+               return ' ';
+       }
+
+       protected function isAlphaNum( $c ) {
+               return ord( $c ) > 126 || $c === '\\' || preg_match( '/^[\w\$]$/', $c ) === 1;
+       }
+
+       protected function min() {
+               $this->a = "\n";
+               $this->action( 3 );
+
+               while ( $this->a !== null ) {
+                       switch ( $this->a ) {
+                               case ' ':
+                                       if ( $this->isAlphaNum( $this->b ) ) {
+                                               $this->action( 1 );
+                                       } else {
+                                               $this->action( 2 );
+                                       }
+                                       break;
+
+                               case "\n":
+                                       switch ( $this->b ) {
+                                               case '{':
+                                               case '[':
+                                               case '(':
+                                               case '+':
+                                               case '-':
+                                                       $this->action( 1 );
+                                                       break;
+
+                                               case ' ':
+                                                       $this->action( 3 );
+                                                       break;
+
+                                               default:
+                                                       if ( $this->isAlphaNum( $this->b ) ) {
+                                                               $this->action( 1 );
+                                                       }
+                                                       else {
+                                                               $this->action( 2 );
+                                                       }
+                                       }
+                                       break;
+
+                               default:
+                                       switch ( $this->b ) {
+                                               case ' ':
+                                                       if ( $this->isAlphaNum( $this->a ) ) {
+                                                               $this->action( 1 );
+                                                               break;
+                                                       }
+
+                                                       $this->action( 3 );
+                                                       break;
+
+                                               case "\n":
+                                                       switch ( $this->a ) {
+                                                               case '}':
+                                                               case ']':
+                                                               case ')':
+                                                               case '+':
+                                                               case '-':
+                                                               case '"':
+                                                               case "'":
+                                                                       $this->action( 1 );
+                                                                       break;
+
+                                                               default:
+                                                                       if ( $this->isAlphaNum( $this->a ) ) {
+                                                                               $this->action( 1 );
+                                                                       }
+                                                                       else {
+                                                                               $this->action( 3 );
+                                                                       }
+                                                       }
+                                                       break;
+
+                                               default:
+                                                       $this->action( 1 );
+                                                       break;
+                                       }
+                       }
+               }
+
+               return $this->output;
+       }
+
+       protected function next() {
+               $c = $this->get();
+
+               if ( $c === '/' ) {
+                       switch( $this->peek() ) {
+                               case '/':
+                                       for ( ; ; ) {
+                                               $c = $this->get();
+
+                                               if ( ord( $c ) <= self::ORD_LF ) {
+                                                       return $c;
+                                               }
+                                       }
+
+                               case '*':
+                                       $this->get();
+
+                                       for ( ; ; ) {
+                                               switch( $this->get() ) {
+                                                       case '*':
+                                                               if ( $this->peek() === '/' ) {
+                                                                       $this->get();
+                                                                       return ' ';
+                                                               }
+                                                               break;
+
+                                                       case null:
+                                                               throw new JSMinException( 'Unterminated comment.' );
+                                               }
+                                       }
+
+                               default:
+                                       return $c;
+                       }
+               }
+
+               return $c;
+       }
+
+       protected function peek() {
+               $this->lookAhead = $this->get();
+               return $this->lookAhead;
+       }
 }
 
 // -- Exceptions ---------------------------------------------------------------
 class JSMinException extends Exception {}
-?>
\ No newline at end of file
+?>