resourceloader: Don't add superfluous line breaks and semicolons
authorTimo Tijhof <krinklemail@gmail.com>
Fri, 4 Apr 2014 01:50:54 +0000 (18:50 -0700)
committerKrinkle <krinklemail@gmail.com>
Fri, 4 Apr 2014 20:13:08 +0000 (20:13 +0000)
The logic was there but didn't work in practice because, just
like this code does itself, code doesn't usually end in ';'.
Instead it ends in ";\n" (trailing line break at end of file),
or even two line breaks (in case of concatenated scripts where
ResourceLoaderFileModule adds another line break).

This saves off a few bytes that were uselessly added in the
load.php output, like:

...
}( jQuery ) );

;
/**
...

After this:

}( jQuery ) );

/**

The logic to add ;\n is still there, but the logic to not add it
when there already wasn't working (added in I3e8227ddb).

Change-Id: Ie055b37b3419ac6dca6349daf745bc48850fff3e

includes/resourceloader/ResourceLoader.php

index b2fb902..77659f6 100644 (file)
@@ -795,9 +795,11 @@ class ResourceLoader {
                                                $scripts = $module->getScriptURLsForDebug( $context );
                                        } else {
                                                $scripts = $module->getScript( $context );
-                                               if ( is_string( $scripts ) && strlen( $scripts ) && substr( $scripts, -1 ) !== ';' ) {
-                                                       // bug 27054: Append semicolon to prevent weird bugs
-                                                       // caused by files not terminating their statements right
+                                               // rtrim() because there are usually a few line breaks after the last ';'.
+                                               // A new line at EOF, a new line added by ResourceLoaderFileModule::readScriptFiles, etc.
+                                               if ( is_string( $scripts ) && strlen( $scripts ) && substr( rtrim( $scripts ), -1 ) !== ';' ) {
+                                                       // Append semicolon to prevent weird bugs caused by files not
+                                                       // terminating their statements right (bug 27054)
                                                        $scripts .= ";\n";
                                                }
                                        }