r75525 - in /branches/upstream/libjavascript-packer-perl/current: ./ inc/Module/ inc/Module/Install/ lib/JavaScript/ t/

jotamjr-guest at users.alioth.debian.org jotamjr-guest at users.alioth.debian.org
Sun Jun 12 21:27:25 UTC 2011


Author: jotamjr-guest
Date: Sun Jun 12 21:27:08 2011
New Revision: 75525

URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=75525
Log:
[svn-upgrade] new version libjavascript-packer-perl (1.004000)

Added:
    branches/upstream/libjavascript-packer-perl/current/META.yml
    branches/upstream/libjavascript-packer-perl/current/t/01-interface.t
    branches/upstream/libjavascript-packer-perl/current/t/02-io.t
Removed:
    branches/upstream/libjavascript-packer-perl/current/t/01-io.t
Modified:
    branches/upstream/libjavascript-packer-perl/current/Changes
    branches/upstream/libjavascript-packer-perl/current/MANIFEST
    branches/upstream/libjavascript-packer-perl/current/Makefile.PL
    branches/upstream/libjavascript-packer-perl/current/README
    branches/upstream/libjavascript-packer-perl/current/inc/Module/Install.pm
    branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/AutoInstall.pm
    branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/Base.pm
    branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/Can.pm
    branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/Fetch.pm
    branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/Include.pm
    branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/Makefile.pm
    branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/Metadata.pm
    branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/Win32.pm
    branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/WriteAll.pm
    branches/upstream/libjavascript-packer-perl/current/lib/JavaScript/Packer.pm

Modified: branches/upstream/libjavascript-packer-perl/current/Changes
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libjavascript-packer-perl/current/Changes?rev=75525&op=diff
==============================================================================
--- branches/upstream/libjavascript-packer-perl/current/Changes (original)
+++ branches/upstream/libjavascript-packer-perl/current/Changes Sun Jun 12 21:27:08 2011
@@ -1,4 +1,21 @@
 Revision history for JavaScript-Packer
+
+1.004   2011-06-07
+    - Raised version number.
+
+1.003_003   2011-05-19
+    - Some minor changes.
+    - Added tests.
+
+1.003_002   2011-05-15
+    - Made comment option work in conjunction with all compression options. Suggested by Marc S. Brooks.
+
+1.003_001   2011-04-13
+    - Compression opts "minify" and "base62" are no longer supported.
+    - Added accessors.
+    - Added tests.
+    - Minor Bugfixes.
+    - Cleanup.
 
 1.002001    2011-03-01
     - Changed requirements to Regexp::RegGrp 1.000001 due to "undefined submatches bug" in Regexp::RegGrp.

Modified: branches/upstream/libjavascript-packer-perl/current/MANIFEST
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libjavascript-packer-perl/current/MANIFEST?rev=75525&op=diff
==============================================================================
--- branches/upstream/libjavascript-packer-perl/current/MANIFEST (original)
+++ branches/upstream/libjavascript-packer-perl/current/MANIFEST Sun Jun 12 21:27:08 2011
@@ -15,9 +15,11 @@
 lib/JavaScript/Packer.pm
 Makefile.PL
 MANIFEST
+META.yml
 README
 t/00-load.t
-t/01-io.t
+t/01-interface.t
+t/02-io.t
 t/pod.t
 t/scripts/s1-expected.js
 t/scripts/s1.js

Added: branches/upstream/libjavascript-packer-perl/current/META.yml
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libjavascript-packer-perl/current/META.yml?rev=75525&op=file
==============================================================================
--- branches/upstream/libjavascript-packer-perl/current/META.yml (added)
+++ branches/upstream/libjavascript-packer-perl/current/META.yml Sun Jun 12 21:27:08 2011
@@ -1,0 +1,29 @@
+---
+abstract: "Perl version of Dean Edwards' Packer.js"
+author:
+  - 'Merten Falk, C<< <nevesenin at cpan.org> >>'
+build_requires:
+  ExtUtils::MakeMaker: 6.42
+  Test::More: 0
+configure_requires:
+  ExtUtils::MakeMaker: 6.42
+distribution_type: module
+generated_by: 'Module::Install version 1.01'
+license: perl
+meta-spec:
+  url: http://module-build.sourceforge.net/META-spec-v1.4.html
+  version: 1.4
+module_name: JavaScript::Packer
+name: JavaScript-Packer
+no_index:
+  directory:
+    - inc
+    - t
+requires:
+  Regexp::RegGrp: 1.001_001
+  perl: 5.8.9
+resources:
+  bugtracker: http://github.com/nevesenin/javascript-packer-perl/issues
+  license: http://dev.perl.org/licenses/
+  repository: http://github.com/nevesenin/javascript-packer-perl
+version: 1.004

Modified: branches/upstream/libjavascript-packer-perl/current/Makefile.PL
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libjavascript-packer-perl/current/Makefile.PL?rev=75525&op=diff
==============================================================================
--- branches/upstream/libjavascript-packer-perl/current/Makefile.PL (original)
+++ branches/upstream/libjavascript-packer-perl/current/Makefile.PL Sun Jun 12 21:27:08 2011
@@ -5,9 +5,10 @@
 
 all_from        'lib/JavaScript/Packer.pm';
 test_requires   'Test::More'        => 0;
-requires        'Regexp::RegGrp'    => "1.000001";
+requires        'Regexp::RegGrp'    => "1.001_001";
 
 repository 'http://github.com/nevesenin/javascript-packer-perl';
+bugtracker 'http://github.com/nevesenin/javascript-packer-perl/issues';
 
 clean_files 't/scripts/s*-got.js';
 

Modified: branches/upstream/libjavascript-packer-perl/current/README
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libjavascript-packer-perl/current/README?rev=75525&op=diff
==============================================================================
--- branches/upstream/libjavascript-packer-perl/current/README (original)
+++ branches/upstream/libjavascript-packer-perl/current/README Sun Jun 12 21:27:08 2011
@@ -17,6 +17,9 @@
     perldoc JavaScript::Packer
 
 You can also look for information at:
+
+    github
+        http://github.com/nevesenin/javascript-packer-perl
 
     RT, CPAN's request tracker
         http://rt.cpan.org/NoAuth/Bugs.html?Dist=JavaScript-Packer

Modified: branches/upstream/libjavascript-packer-perl/current/inc/Module/Install.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libjavascript-packer-perl/current/inc/Module/Install.pm?rev=75525&op=diff
==============================================================================
--- branches/upstream/libjavascript-packer-perl/current/inc/Module/Install.pm (original)
+++ branches/upstream/libjavascript-packer-perl/current/inc/Module/Install.pm Sun Jun 12 21:27:08 2011
@@ -31,7 +31,7 @@
 	# This is not enforced yet, but will be some time in the next few
 	# releases once we can make sure it won't clash with custom
 	# Module::Install extensions.
-	$VERSION = '1.00';
+	$VERSION = '1.01';
 
 	# Storage for the pseudo-singleton
 	$MAIN    = undef;
@@ -467,4 +467,4 @@
 
 1;
 
-# Copyright 2008 - 2010 Adam Kennedy.
+# Copyright 2008 - 2011 Adam Kennedy.

Modified: branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/AutoInstall.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/AutoInstall.pm?rev=75525&op=diff
==============================================================================
--- branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/AutoInstall.pm (original)
+++ branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/AutoInstall.pm Sun Jun 12 21:27:08 2011
@@ -6,7 +6,7 @@
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.00';
+	$VERSION = '1.01';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }

Modified: branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/Base.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/Base.pm?rev=75525&op=diff
==============================================================================
--- branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/Base.pm (original)
+++ branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/Base.pm Sun Jun 12 21:27:08 2011
@@ -4,7 +4,7 @@
 use strict 'vars';
 use vars qw{$VERSION};
 BEGIN {
-	$VERSION = '1.00';
+	$VERSION = '1.01';
 }
 
 # Suspend handler for "redefined" warnings

Modified: branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/Can.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/Can.pm?rev=75525&op=diff
==============================================================================
--- branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/Can.pm (original)
+++ branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/Can.pm Sun Jun 12 21:27:08 2011
@@ -9,7 +9,7 @@
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.00';
+	$VERSION = '1.01';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }

Modified: branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/Fetch.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/Fetch.pm?rev=75525&op=diff
==============================================================================
--- branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/Fetch.pm (original)
+++ branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/Fetch.pm Sun Jun 12 21:27:08 2011
@@ -6,7 +6,7 @@
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.00';
+	$VERSION = '1.01';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }

Modified: branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/Include.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/Include.pm?rev=75525&op=diff
==============================================================================
--- branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/Include.pm (original)
+++ branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/Include.pm Sun Jun 12 21:27:08 2011
@@ -6,7 +6,7 @@
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.00';
+	$VERSION = '1.01';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }

Modified: branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/Makefile.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/Makefile.pm?rev=75525&op=diff
==============================================================================
--- branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/Makefile.pm (original)
+++ branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/Makefile.pm Sun Jun 12 21:27:08 2011
@@ -8,7 +8,7 @@
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.00';
+	$VERSION = '1.01';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }

Modified: branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/Metadata.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/Metadata.pm?rev=75525&op=diff
==============================================================================
--- branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/Metadata.pm (original)
+++ branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/Metadata.pm Sun Jun 12 21:27:08 2011
@@ -6,7 +6,7 @@
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.00';
+	$VERSION = '1.01';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
@@ -515,6 +515,7 @@
 		'GNU Free Documentation license'     => 'unrestricted', 1,
 		'GNU Affero General Public License'  => 'open_source',  1,
 		'(?:Free)?BSD license'               => 'bsd',          1,
+		'Artistic license 2\.0'              => 'artistic_2',   1,
 		'Artistic license'                   => 'artistic',     1,
 		'Apache (?:Software )?license'       => 'apache',       1,
 		'GPL'                                => 'gpl',          1,
@@ -550,9 +551,9 @@
 
 sub _extract_bugtracker {
 	my @links   = $_[0] =~ m#L<(
-	 \Qhttp://rt.cpan.org/\E[^>]+|
-	 \Qhttp://github.com/\E[\w_]+/[\w_]+/issues|
-	 \Qhttp://code.google.com/p/\E[\w_\-]+/issues/list
+	 https?\Q://rt.cpan.org/\E[^>]+|
+	 https?\Q://github.com/\E[\w_]+/[\w_]+/issues|
+	 https?\Q://code.google.com/p/\E[\w_\-]+/issues/list
 	 )>#gx;
 	my %links;
 	@links{@links}=();

Modified: branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/Win32.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/Win32.pm?rev=75525&op=diff
==============================================================================
--- branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/Win32.pm (original)
+++ branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/Win32.pm Sun Jun 12 21:27:08 2011
@@ -6,7 +6,7 @@
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.00';
+	$VERSION = '1.01';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }

Modified: branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/WriteAll.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/WriteAll.pm?rev=75525&op=diff
==============================================================================
--- branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/WriteAll.pm (original)
+++ branches/upstream/libjavascript-packer-perl/current/inc/Module/Install/WriteAll.pm Sun Jun 12 21:27:08 2011
@@ -6,7 +6,7 @@
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.00';
+	$VERSION = '1.01';
 	@ISA     = qw{Module::Install::Base};
 	$ISCORE  = 1;
 }

Modified: branches/upstream/libjavascript-packer-perl/current/lib/JavaScript/Packer.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libjavascript-packer-perl/current/lib/JavaScript/Packer.pm?rev=75525&op=diff
==============================================================================
--- branches/upstream/libjavascript-packer-perl/current/lib/JavaScript/Packer.pm (original)
+++ branches/upstream/libjavascript-packer-perl/current/lib/JavaScript/Packer.pm Sun Jun 12 21:27:08 2011
@@ -8,10 +8,23 @@
 
 # =========================================================================== #
 
-our $VERSION = '1.002001';
+our $VERSION = '1.004';
+
+our @BOOLEAN_ACCESSORS = (
+    'no_compress_comment',
+    'remove_copyright'
+);
+
+our @COPYRIGHT_ACCESSORS = (
+    'copyright',
+    'copyright_comment'
+);
+
+our @COMPRESS_OPTS      = ( 'clean', 'obfuscate', 'shrink', 'best' );
+our $DEFAULT_COMPRESS   = 'clean';
 
 our $PACKER_COMMENT     = '\/\*\s*JavaScript::Packer\s*(\w+)\s*\*\/';
-our $COPYRIGHT_COMMENT  = '(\/\*(?>[^\*]|\*[^\/])*copyright(?>[^\*]|\*[^\/])*\*\/)';
+our $COPYRIGHT_COMMENT  = '\/\*((?>[^\*]|\*[^\/])*copyright(?>[^\*]|\*[^\/])*)\*\/';
 
 our $SHRINK_VARS = {
     BLOCK           => qr/(((catch|do|if|while|with|function)\b[^~{};]*(\(\s*[^{};]*\s*\))\s*)?(\{[^{}]*\}))/,  # function ( arg ) { ... }
@@ -132,7 +145,7 @@
     }
 ];
 
- our $TRIM = [
+our $TRIM = [
     {
         regexp      => '(\d)(?:\|\d)+\|(\d)',
         replacement => sub { return sprintf( "%d-%d", $_[0]->{submatches}->[0] || 0, $_[0]->{submatches}->[1] || 0 ); }
@@ -150,10 +163,81 @@
         replacement => ''
     }
 ];
+
+our @REGGRPS = ( 'comments', 'clean', 'whitespace', 'concat', 'trim', 'data_store' );
+
+# --------------------------------------------------------------------------- #
+
+{
+    no strict 'refs';
+
+    foreach my $field ( @BOOLEAN_ACCESSORS ) {
+        next if defined *{ __PACKAGE__ . '::' . $field }{CODE};
+
+        *{ __PACKAGE__ . '::' . $field} = sub {
+            my ( $self, $value ) = @_;
+
+            $self->{'_' . $field} = $value ? 1 : undef if ( defined( $value ) );
+
+            return $self->{'_' . $field};
+        };
+    }
+
+    foreach my $field ( @COPYRIGHT_ACCESSORS ) {
+        $field = '_' . $field if ( $field eq 'copyright_comment' );
+        next if defined *{ __PACKAGE__ . '::' . $field }{CODE};
+
+        *{ __PACKAGE__ . '::' . $field} = sub {
+            my ( $self, $value ) = @_;
+
+            if ( defined( $value ) and not ref( $value ) ) {
+                $value =~ s/^\s*|\s*$//gs;
+                $self->{'_' . $field} = $value;
+            }
+
+            my $ret = '';
+
+            if ( $self->{'_' . $field} ) {
+                $ret = '/* ' . $self->{'_' . $field} . ' */' . "\n";
+            }
+
+            return $ret;
+        };
+    }
+
+    foreach my $reggrp ( @REGGRPS ) {
+        next if defined *{ __PACKAGE__ . '::reggrp_' . $reggrp }{CODE};
+
+        *{ __PACKAGE__ . '::reggrp_' . $reggrp } = sub {
+            my ( $self ) = shift;
+
+            return $self->{ '_reggrp_' . $reggrp };
+        };
+    }
+}
+
+sub compress {
+    my ( $self, $value ) = @_;
+
+    if ( defined( $value ) ) {
+        if ( grep( $value eq $_, @COMPRESS_OPTS ) ) {
+            $self->{_compress} = $value;
+        }
+        elsif ( ! $value ) {
+            $self->{_compress} = undef;
+        }
+    }
+
+    $self->{_compress} ||= $DEFAULT_COMPRESS;
+
+    return $self->{_compress};
+}
 
 sub init {
     my $class   = shift;
     my $self    = {};
+
+    bless( $self, $class );
 
     map {
         my $what = $_;
@@ -267,13 +351,9 @@
     $self->{comments}->{reggrp_data}->[-2]->{replacement} = sub {
         my $submatches = $_[0]->{submatches};
         if ( $submatches->[0] eq '@' ) {
-            # I don't like this, but
-            # $self->{comments}->{reggrp}->exec( \$_[1]->[1] ); ...
-            # will not work. It isn't initialized jet.
-            # If someone has a better idea, please let me know
-            $self->_process_wrapper( 'comments', \$submatches->[1] );
-            $self->_process_wrapper( 'clean', \$submatches->[1] );
-            $self->_process_wrapper( 'whitespace', \$submatches->[1] );
+            $self->reggrp_comments()->exec( \$submatches->[1] );
+            $self->reggrp_clean()->exec( \$submatches->[1] );
+            $self->reggrp_whitespace()->exec( \$submatches->[1] );
 
             return sprintf( "//%s%s\n%s", @{$submatches} );
         }
@@ -284,10 +364,10 @@
         my $submatches = $_[0]->{submatches};
         if ( $submatches->[0] =~ /^\/\*\@(.*)\@\*\/$/sm ) {
             my $cmnt = $1;
-            # Same as above
-            $self->_process_wrapper( 'comments', \$cmnt );
-            $self->_process_wrapper( 'clean', \$cmnt );
-            $self->_process_wrapper( 'whitespace', \$cmnt );
+
+            $self->reggrp_comments()->exec( \$cmnt );
+            $self->reggrp_clean()->exec( \$cmnt );
+            $self->reggrp_whitespace()->exec( \$cmnt );
 
             return sprintf( '/*@%s@*/ %s', $cmnt, $submatches->[1] );
         }
@@ -303,14 +383,10 @@
     };
 
     map {
-        $self->{$_}->{reggrp} = Regexp::RegGrp->new( { reggrp => $self->{$_}->{reggrp_data} } );
-    } ( 'comments', 'clean', 'whitespace', 'concat', 'trim' );
-
-    $self->{data_store}->{reggrp} = Regexp::RegGrp->new( { reggrp => $self->{data_store}->{reggrp_data} } );
+        $self->{ '_reggrp_' . $_ } = Regexp::RegGrp->new( { reggrp => $self->{$_}->{reggrp_data} } );
+    } @REGGRPS;
 
     $self->{block_data} = [];
-
-    bless( $self, $class );
 
     return $self;
 }
@@ -350,57 +426,44 @@
         $javascript = ref( $input ) ? $input : \$input;
     }
 
-    if ( ref( $opts ) ne 'HASH' ) {
-        carp( 'Second argument must be a hashref of options! Using defaults!' ) if ( $opts );
-        $opts = { compress => 'clean', copyright => '', no_compress_comment => 0, remove_copyright => 0 };
-    }
-    else {
-        $opts->{compress} ||= 'clean';
-        unless (
-            grep(
-                $_ eq $opts->{compress},
-                ( 'clean', 'minify', 'shrink', 'base62', 'obfuscate', 'best' )
-            )
-        ) {
-            $opts->{compress} = 'clean';
-        }
-
-        if ( $opts->{compress} eq 'minify' ) {
-            $opts->{compress} = 'clean';
-        }
-        elsif ( $opts->{compress} eq 'base62' ) {
-            $opts->{compress} = 'obfuscate';
-        }
-
-        $opts->{remove_copyright}       = $opts->{remove_copyright} ? 1 : 0;
-        $opts->{no_compress_comment}    = $opts->{no_compress_comment} ? 1 : 0;
-        $opts->{copyright}              = '' if ( ref( $opts->{copyright} ) );
-        $opts->{copyright}              = ( $opts->{copyright} and $opts->{compress} eq 'clean' ) ? ( '/* ' . $opts->{copyright} . ' */' ) : '';
-    }
-
-    if ( not $opts->{remove_copyright} and not $opts->{copyright} and ${$javascript} =~ /$COPYRIGHT_COMMENT/ism ) {
-        $opts->{copyright} = $1;
-    }
-
-    if ( not $opts->{no_compress_comment} and ${$javascript} =~ /$PACKER_COMMENT/ ) {
+    if ( ref( $opts ) eq 'HASH' ) {
+        foreach my $field ( @BOOLEAN_ACCESSORS ) {
+            $self->$field( $opts->{$field} ) if ( defined( $opts->{$field} ) );
+        }
+
+        foreach my $field ( 'compress', 'copyright' ) {
+            $self->$field( $opts->{$field} ) if ( defined( $opts->{$field} ) );
+        }
+    }
+
+    my $copyright_comment = '';
+
+    if ( ${$javascript} =~ /$COPYRIGHT_COMMENT/ism ) {
+        $copyright_comment = $1;
+    }
+    # Resets copyright_comment() if there is no copyright comment
+    $self->_copyright_comment( $copyright_comment );
+
+    if ( not $self->no_compress_comment() and ${$javascript} =~ /$PACKER_COMMENT/ ) {
         my $compress = $1;
         if ( $compress eq '_no_compress_' ) {
-            return ( $cont eq 'scalar' ) ? ${$javascript} : undef;
-        }
-
-        $opts->{compress} = grep( $compress, ( 'clean', 'shrink', 'obfuscate', 'best' ) ) ? $compress : $opts->{compress};
+            return ${$javascript} if ( $cont eq 'scalar' );
+            return;
+        }
+
+        $self->compress( $compress );
     }
 
     ${$javascript} =~ s/\r//gsm;
     ${$javascript} .= "\n";
 
-    $self->{comments}->{reggrp}->exec( $javascript );
-    $self->{clean}->{reggrp}->exec( $javascript );
-    $self->{whitespace}->{reggrp}->exec( $javascript );
-    $self->{concat}->{reggrp}->exec( $javascript );
-
-    if ( $opts->{compress} ne 'clean' ) {
-        $self->{data_store}->{reggrp}->exec( $javascript );
+    $self->reggrp_comments()->exec( $javascript );
+    $self->reggrp_clean()->exec( $javascript );
+    $self->reggrp_whitespace()->exec( $javascript );
+    $self->reggrp_concat()->exec( $javascript );
+
+    if ( $self->compress() ne 'clean' ) {
+        $self->reggrp_data_store()->exec( $javascript );
 
         while( ${$javascript} =~ /$SHRINK_VARS->{BLOCK}/ ) {
             ${$javascript} =~ s/$SHRINK_VARS->{BLOCK}/$self->_store_block_data( $1 )/egsm;
@@ -422,12 +485,12 @@
             ${$javascript} =~ s/$shrunk_var/$short_id/g;
         }
 
-        $self->{data_store}->{reggrp}->restore_stored( $javascript );
+        $self->reggrp_data_store()->restore_stored( $javascript );
 
         $self->{block_data} = [];
     }
 
-    if ( $opts->{compress} eq 'obfuscate' or $opts->{compress} eq 'best' ) {
+    if ( $self->compress() eq 'obfuscate' or $self->compress() eq 'best' ) {
         my $words = {};
 
         my @words = ${$javascript} =~ /$BASE62_VARS->{WORDS}/g;
@@ -501,7 +564,7 @@
 
         my $pd = join( '|', @pattern );
 
-        $self->{trim}->{reggrp}->exec( \$pd );
+        $self->reggrp_trim()->exec( \$pd );
 
         unless ( $pd ) {
             $pd = '^$';
@@ -588,7 +651,7 @@
 
         $packed_length += ${$javascript} =~ tr/\\\'/\\\'/;
 
-        if ( $opts->{compress} eq 'obfuscate' or $packed_length <= length( ${$javascript} ) ) {
+        if ( $self->compress() eq 'obfuscate' or $packed_length <= length( ${$javascript} ) ) {
 
             ${$javascript} =~ s/$BASE62_VARS->{WORDS}/sprintf( "%s", $words->{$1}->{encoded} )/eg;
 
@@ -602,15 +665,11 @@
 
     }
 
-    ${$javascript} = $opts->{copyright} . "\n" . ${$javascript} if ( $opts->{copyright} );
+    if ( not $self->remove_copyright() ) {
+        ${$javascript} = ( $self->copyright() || $self->_copyright_comment() ) . ${$javascript};
+    }
 
     return ${$javascript} if ( $cont eq 'scalar' );
-}
-
-sub _process_wrapper {
-    my ( $self, $reg_name, $in ) = @_;
-
-    $self->{$reg_name}->{reggrp}->exec( $in );
 }
 
 sub _restore_data {
@@ -728,7 +787,7 @@
 
 =head1 VERSION
 
-Version 1.002001
+Version 1.004
 
 =head1 DESCRIPTION
 
@@ -769,11 +828,9 @@
 is recommended because especially when compressing short scripts the result
 will exceed the input if compression level is 'obfuscate'.
 
-For backward compatibility 'minify' and 'base62' will still work.
-
 =item copyright
 
-You can add a copyright notice on top of the script.
+You can add a copyright notice at the top of the script.
 
 =item remove_copyright
 
@@ -791,8 +848,6 @@
     /* JavaScript::Packer _no_compress_ */
     /* JavaScript::Packer shrink */
 
-Is set by default.
-
 =back
 
 =head1 EXAMPLES
@@ -855,9 +910,8 @@
 
 =head1 BUGS
 
-Please report any bugs or feature requests to
-C<bug-javascript-packer at rt.cpan.org>, or through the web interface at
-L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=JavaScript-Packer>.
+Please report any bugs or feature requests through the web interface at
+L<http://github.com/nevesenin/javascript-packer-perl/issues>.
 
 =head1 SUPPORT
 

Added: branches/upstream/libjavascript-packer-perl/current/t/01-interface.t
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libjavascript-packer-perl/current/t/01-interface.t?rev=75525&op=file
==============================================================================
--- branches/upstream/libjavascript-packer-perl/current/t/01-interface.t (added)
+++ branches/upstream/libjavascript-packer-perl/current/t/01-interface.t Sun Jun 12 21:27:08 2011
@@ -1,0 +1,62 @@
+#!perl -T
+
+use Test::More;
+
+my $not = 18;
+
+SKIP: {
+    eval { use JavaScript::Packer; };
+
+    skip( 'JavaScript::Packer not installed!', $not ) if ( $@ );
+
+    plan tests => $not;
+
+    my $packer = JavaScript::Packer->init();
+
+    ok( ! $packer->no_compress_comment(), 'Default value for no_compress_comment' );
+    ok( ! $packer->remove_copyright(), 'Default value for remove_copyright' );
+    is( $packer->compress(), 'clean', 'Default value for compress' );
+    is( $packer->copyright(), '', 'Default value for copyright' );
+
+    $packer->no_compress_comment( 1 );
+    ok( $packer->no_compress_comment(), 'Set no_compress_comment.' );
+    $packer->no_compress_comment( 0 );
+    ok( ! $packer->no_compress_comment(), 'Unset no_compress_comment.' );
+
+    $packer->remove_copyright( 1 );
+    ok( $packer->remove_copyright(), 'Set remove_copyright.' );
+    $packer->remove_copyright( 0 );
+    ok( ! $packer->remove_copyright(), 'Unset remove_copyright.' );
+
+    $packer->compress( 'shrink' );
+    is( $packer->compress(), 'shrink', 'Set compress to "shrink".' );
+    $packer->compress( 'foo' );
+    is( $packer->compress(), 'shrink', 'Set compress to "foo" failed.' );
+    $packer->compress( 'clean' );
+    is( $packer->compress(), 'clean', 'Setting compress back to "clean".' );
+
+    $packer->copyright( 'Ich war\'s!' );
+    is( $packer->copyright(), "/* Ich war's! */\n", 'Set copyright' );
+    $packer->copyright( 'Ich war\'s' . "\n" . 'nochmal!' );
+    is( $packer->copyright(), "/* Ich war's\nnochmal! */\n", 'Set copyright' );
+    $packer->copyright( '' );
+    is( $packer->copyright(), '', 'Reset copyright' );
+
+    my $str = '';
+
+    $packer->minify( \$str, {} );
+
+    ok( ! $packer->no_compress_comment(), 'Default value for no_compress_comment is still set.' );
+    is( $packer->compress(), 'clean', 'Default value for compress is still set.' );
+
+    $packer->minify(
+        \$str,
+        {
+            compress            => 'shrink',
+            no_compress_comment => 1,
+        }
+    );
+
+    ok( $packer->no_compress_comment(), 'Set no_compress_comment again.' );
+    is( $packer->compress(), 'shrink', 'Set compress to "minify" again.' );
+}

Added: branches/upstream/libjavascript-packer-perl/current/t/02-io.t
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libjavascript-packer-perl/current/t/02-io.t?rev=75525&op=file
==============================================================================
--- branches/upstream/libjavascript-packer-perl/current/t/02-io.t (added)
+++ branches/upstream/libjavascript-packer-perl/current/t/02-io.t Sun Jun 12 21:27:08 2011
@@ -1,0 +1,122 @@
+#!perl -T
+
+# =========================================================================== #
+#
+# Most of these tests are stolen from JavaScript::Minifier
+#
+# =========================================================================== #
+
+use Test::More;
+
+my $not = 19;
+
+SKIP: {
+    eval( 'use JavaScript::Packer' );
+
+    skip( 'JavaScript::Packer not installed!', $not ) if ( $@ );
+
+    plan tests => $not;
+
+    fileTest( 's1', 'clean', 'compression level "clean"' );
+    fileTest( 's2', 'shrink', 'compression level "shrink"' );
+    fileTest( 's3', 'obfuscate', 'compression level "obfuscate"' );
+    fileTest( 's4', 'best', 'compression level "best" whith short javascript' );
+    fileTest( 's5', 'best', 'compression level "best" whith long javascript' );
+    fileTest( 's7', 'clean', 'compression level "clean" function as argument' );
+    fileTest( 's8', 'shrink', 'compression level "shrink" function as argument' );
+    fileTest( 's9', 'shrink', 'compression level "shrink" with _no_shrink_ argument' );
+    fileTest( 's10', 'shrink', 'compression level "shrink" with qouted args' );
+
+    my $packer = JavaScript::Packer->init();
+
+    my $var = 'var x = 2;';
+    $packer->minify( \$var );
+    is( $var, 'var x=2;', 'string literal input and ouput' );
+
+    $var = "var x = 2;\n;;;alert('hi');\nvar x = 2;";
+    $packer->minify( \$var );
+    is( $var, 'var x=2;var x=2;', 'scriptDebug option' );
+
+    $var = "var x = 2;";
+    $packer->copyright( 'BSD' );
+    $packer->minify( \$var );
+    is( $var, '/* BSD */' . "\n" . 'var x=2;', 'copyright option compression level "clean"');
+    $packer->compress( 'shrink' );
+    $packer->minify( \$var );
+    is( $var, '/* BSD */' . "\n" . 'var x=2;', 'copyright option compression level "shrink"');
+    $packer->compress( 'best' );
+    $packer->minify( \$var );
+    is( $var, '/* BSD */' . "\n" . 'var x=2;', 'copyright option compression level "best"');
+    $packer->compress( 'obfuscate' );
+    $packer->minify( \$var );
+    is( $var, '/* BSD */' . "\neval(function(p,a,c,k,e,r){e=String;if('0'.replace(0,e)==0){while(c--)r[e(c)]=k[c];k=[function(e){return r[e]||e}];e=function(){return'[01]'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\\\b'+e(c)+'\\\\b','g'),k[c]);return p}('0 1=2;',[],2,'var|x'.split('|'),0,{}))", 'copyright option compression level "obfuscate"');
+
+    $packer = JavaScript::Packer->init();
+
+    $var = "/* Copyright BSD */var x = 2;";
+    $packer->minify( \$var, { remove_copyright => 1 } );
+    is( $var, 'var x=2;', 'copyright comment with remove_copyright option');
+
+    $var = "/* Copyright BSD */var x = 2;";
+    $packer->minify( \$var, { remove_copyright => 0 } );
+    is( $var, '/* Copyright BSD */' . "\n" . 'var x=2;', 'copyright comment without remove_copyright option');
+
+    $packer = JavaScript::Packer->init();
+
+    $var = "/* JavaScript::Packer _no_compress_ */\n\nvar x = 1;\n\n\nvar y = 2;";
+    $packer->minify( \$var );
+    is( $var, "/* JavaScript::Packer _no_compress_ */\n\nvar x = 1;\n\n\nvar y = 2;", '_no_compress_ comment');
+
+    $var = "/* JavaScript::Packer _no_compress_ */\n\nvar x = 1;\n\n\nvar y = 2;";
+    $packer->minify( \$var, { no_compress_comment => 1 } );
+    is( $var, "var x=1;var y=2;", '_no_compress_ comment with no_compress_comment option');
+
+}
+
+sub filesMatch {
+    my $file1 = shift;
+    my $file2 = shift;
+    my $a;
+    my $b;
+
+    while (1) {
+        $a = getc($file1);
+        $b = getc($file2);
+
+        if (!defined($a) && !defined($b)) { # both files end at same place
+            return 1;
+        }
+        elsif (
+            !defined($b) || # file2 ends first
+            !defined($a) || # file1 ends first
+            $a ne $b
+        ) {     # a and b not the same
+            return 0;
+        }
+    }
+}
+
+sub fileTest {
+    my $filename    = shift;
+    my $compress    = shift || 'minify';
+    my $comment    = shift || '';
+
+    open(INFILE, 't/scripts/' . $filename . '.js') or die("couldn't open file");
+    open(GOTFILE, '>t/scripts/' . $filename . '-got.js') or die("couldn't open file");
+
+    my $js = join( '', <INFILE> );
+
+    my $packer = JavaScript::Packer->init();
+
+    $packer->minify( \$js, { compress => $compress } );
+    print GOTFILE $js;
+    close(INFILE);
+    close(GOTFILE);
+
+    open(EXPECTEDFILE, 't/scripts/' . $filename . '-expected.js') or die("couldn't open file");
+    open(GOTFILE, 't/scripts/' . $filename . '-got.js') or die("couldn't open file");
+    ok( filesMatch(GOTFILE, EXPECTEDFILE), $comment );
+    close(EXPECTEDFILE);
+    close(GOTFILE);
+}
+




More information about the Pkg-perl-cvs-commits mailing list