r13918@rob-kinyons-powerbook58: rob | 2006-06-02 10:04:04 -0400
[p5sagit/Excel-Template.git] / lib / Excel / Template / Format.pm
index 4854eb5..778c49d 100644 (file)
@@ -9,27 +9,27 @@ use strict;
 # places in the file. This provides a way of keeping track of already-allocated
 # formats and making new formats based on old ones.
 
-{
-    my %_Formats;
-
-    sub _assign { $_Formats{$_[0]} = $_[1]; $_Formats{$_[1]} = $_[0] }
-#        my $key = shift;
-#        my $format = shift;
-#        $_Formats{$key} = $format;
-#        $_Formats{$format} = $key;
-#    }
-
-    sub _retrieve_key { $_Formats{ $_[0] } }
-#        my $format = shift;
-#        return $_Formats{$format};
-#    }
-
-    *_retrieve_format = \&_retrieve_key;
-#    sub _retrieve_format {
-#        my $key = shift;
-#        return $_Formats{$key};
-#    }
-}
+sub new { bless {}, shift }
+
+sub _assign { $_[0]{$_[1]} = $_[2]; $_[0]{$_[2]} = $_[1] }
+#    my $self = shift;
+#    my ($key, $format) = @_;
+#    $self->{$key} = $format;
+#    $self->{$format} = $key;
+#}
+
+sub _retrieve_key { $_[0]{ $_[1] } }
+#    my $self = shift;
+#    my ($format) = @_;
+#    return $self->{$format};
+#}
+
+*_retrieve_format = \&_retrieve_key;
+#sub _retrieve_format {
+#    my $self = shift;
+#    my ($key) = @_;
+#    return $self->{$key};
+#}
 
 {
     my @_boolean_formats = qw(
@@ -53,7 +53,7 @@ use strict;
         $params{lc $_} = delete $params{$_} for keys %params;
 
         my @parts = (
-            (map { !! $params{$_} } @_boolean_formats),
+            (map { $params{$_} ? 1 : '' } @_boolean_formats),
             (map { $params{$_} ? $params{$_} + 0 : '' } @_integer_formats),
             (map { $params{$_} || '' } @_string_formats),
         );
@@ -72,11 +72,11 @@ use strict;
         my @string_parts  = splice @key_parts, 0, scalar( @_string_formats );
 
         my %params;
-        $params{ $_boolean_formats[$_] } = !!1
+        $params{ $_boolean_formats[$_] } = ~~1
             for grep { $boolean_parts[$_] } 0 .. $#_boolean_formats;
 
         $params{ $_integer_formats[$_] } = $integer_parts[$_]
-            for grep { defined $integer_parts[$_] } 0 .. $#_integer_formats;
+            for grep { defined $integer_parts[$_] && length $integer_parts[$_] } 0 .. $#_integer_formats;
 
         $params{ $_string_formats[$_] } = $string_parts[$_]
             for grep { $string_parts[$_] } 0 .. $#_string_formats;
@@ -86,13 +86,13 @@ use strict;
 
     sub copy
     {
-        shift;
+        my $self = shift;
         my ($context, $old_fmt, %properties) = @_;
 
         # This is a key used for non-format book-keeping.
         delete $properties{ ELEMENTS };
 
-        defined(my $key = _retrieve_key($old_fmt))
+        defined(my $key = _retrieve_key($self, $old_fmt))
             || die "Internal Error: Cannot find key for format '$old_fmt'!\n";
 
         my %params = _key_to_params($key);
@@ -120,29 +120,81 @@ use strict;
 
         my $new_key = _params_to_key(%params);
 
-        my $format = _retrieve_format($new_key);
+        my $format = _retrieve_format($self, $new_key);
         return $format if $format;
 
         $format = $context->{XLS}->add_format(%params);
-        _assign($new_key, $format);
+        _assign($self, $new_key, $format);
         return $format;
     }
 }
 
 sub blank_format
 {
-    shift;
+    my $self = shift;
     my ($context) = @_;
 
     my $blank_key = _params_to_key();
 
-    my $format = _retrieve_format($blank_key);
+    my $format = _retrieve_format($self, $blank_key);
     return $format if $format;
 
     $format = $context->{XLS}->add_format;
-    _assign($blank_key, $format);
+    _assign($self, $blank_key, $format);
     return $format;
 }
 
 1;
 __END__
+
+=head1 NAME
+
+Excel::Template::Format - Excel::Template::Format
+
+=head1 PURPOSE
+
+Helper class for FORMAT
+
+=head1 NODE NAME
+
+None
+
+=head1 INHERITANCE
+
+None
+
+=head1 ATTRIBUTES
+
+None
+
+=head1 CHILDREN
+
+None
+
+=head1 EFFECTS
+
+None
+
+=head1 DEPENDENCIES
+
+None
+
+=head1 METHODS
+
+=head2 blank_format
+
+Provides a blank format for use
+
+=head2 copy
+
+Clones an existing format, so that a new format can be built from it
+
+=head1 AUTHOR
+
+Rob Kinyon (rob.kinyon@gmail.com)
+
+=head1 SEE ALSO
+
+FORMAT
+
+=cut