- Added some stuff to MANIFEST.SKIP
[dbsrgits/SQL-Translator.git] / lib / SQL / Translator / Parser / xSV.pm
index 7813a9a..0bade64 100644 (file)
@@ -1,10 +1,9 @@
 package SQL::Translator::Parser::xSV;
 
 # -------------------------------------------------------------------
-# $Id: xSV.pm,v 1.13 2003-10-10 15:59:03 kycl4rk Exp $
+# $Id$
 # -------------------------------------------------------------------
-# Copyright (C) 2003 Ken Y. Clark <kclark@cpan.org>,
-#                    darren chamberlain <darren@cpan.org>
+# Copyright (C) 2002-4 SQLFairy Authors
 #
 # This program is free software; you can redistribute it and/or
 # modify it under the terms of the GNU General Public License as
@@ -68,7 +67,7 @@ C<SQL::Translator::Utils::normalize_name>.
 
 use strict;
 use vars qw($VERSION @EXPORT);
-$VERSION = sprintf "%d.%02d", q$Revision: 1.13 $ =~ /(\d+)\.(\d+)/;
+$VERSION = sprintf "%d.%02d", q$Revision$ =~ /(\d+)\.(\d+)/;
 
 use Exporter;
 use Text::ParseWords qw(quotewords);
@@ -144,8 +143,9 @@ sub parse {
                     $data =~ /^-?\.\d+$/  
                 ) {
                     $type = 'float';
-                    my ( $w, $d ) = map { s/,//g; $_ } split( /\./, $data );
-                    $size = [ length $w + length $d, length $d ];
+                    my ( $w, $d ) = 
+                        map { s/,//g; length $_ || 1 } split( /\./, $data );
+                    $size = [ $w + $d, $d ];
                 }
                 else {
                     $type = 'char';
@@ -164,10 +164,15 @@ sub parse {
         }
 
         for my $field ( keys %field_info ) {
-            my $size      = $field_info{ $field }{'size'};
+            my $size      = $field_info{ $field }{'size'} || [ 1 ];
             my $data_type = 
-                $field_info{ $field }{'char'}  ? 'char'  : 
-                $field_info{ $field }{'float'} ? 'float' : 'integer';
+                $field_info{ $field }{'char'}    ? 'char'  : 
+                $field_info{ $field }{'float'}   ? 'float' :
+                $field_info{ $field }{'integer'} ? 'integer' : 'char';
+
+            if ( $data_type eq 'char' && scalar @$size == 2 ) {
+                $size = [ $size->[0] + $size->[1] ];
+            }
 
             my $field = $table->get_field( $field );
             $field->size( $size );
@@ -183,7 +188,7 @@ sub parse {
 # -------------------------------------------------------------------
 =pod
 
-=head1 AUTHOR
+=head1 AUTHORS
 
 Darren Chamberlain E<lt>darren@cpan.orgE<gt>,
 Ken Y. Clark E<lt>kclark@cpan.orgE<gt>.