X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FTranslator%2FProducer%2FHTML.pm;h=7d4fbfcfa914f83c3817f1315731cf82d0c4b4ed;hb=d6d2873a78cf19f60f3cd7b5c5eb964b9104ec84;hp=0894a794a6230ed5165be0503572a4004e89badb;hpb=1ea530d4f2822ce6f7c59e436664757c550f5f66;p=dbsrgits%2FSQL-Translator.git diff --git a/lib/SQL/Translator/Producer/HTML.pm b/lib/SQL/Translator/Producer/HTML.pm index 0894a79..7d4fbfc 100644 --- a/lib/SQL/Translator/Producer/HTML.pm +++ b/lib/SQL/Translator/Producer/HTML.pm @@ -1,7 +1,7 @@ package SQL::Translator::Producer::HTML; # ------------------------------------------------------------------- -# $Id: HTML.pm,v 1.7 2003-08-20 13:50:47 dlc Exp $ +# $Id: HTML.pm,v 1.9 2003-08-20 17:14:27 kycl4rk Exp $ # ------------------------------------------------------------------- # Copyright (C) 2003 Ken Y. Clark # @@ -21,10 +21,9 @@ package SQL::Translator::Producer::HTML; # ------------------------------------------------------------------- use strict; -use CGI; use Data::Dumper; use vars qw[ $VERSION ]; -$VERSION = sprintf "%d.%02d", q$Revision: 1.7 $ =~ /(\d+)\.(\d+)/; +$VERSION = sprintf "%d.%02d", q$Revision: 1.9 $ =~ /(\d+)\.(\d+)/; use SQL::Translator::Schema::Constants; use SQL::Translator::Utils qw(header_comment); @@ -32,19 +31,23 @@ use SQL::Translator::Utils qw(header_comment); # ------------------------------------------------------------------- sub produce { my $t = shift; + my $args = $t->producer_args; my $schema = $t->schema; my $schema_name = $schema->name || 'Schema'; - my $args = $t->producer_args; - my $q = defined $args->{'pretty'} - ? do { require CGI::Pretty; CGI::Pretty->new } - : CGI->new; my $title = $args->{'title'} || "Description of $schema_name"; + my $q = defined $args->{'pretty'} + ? do { require CGI::Pretty; + import CGI::Pretty; + CGI::Pretty->new } + : do { require CGI; + import CGI; + CGI->new }; my $html = $q->start_html( { -title => $title, -bgcolor => 'lightgoldenrodyellow' } - ) . $q->h1( $title ). '', $q->hr; + ) . $q->h1( $title ) . '', $q->hr; - if ( my @table_names = map { $_->name } $schema->get_tables ) { + if ( my @table_names = map {$_->name?$_->name:()} $schema->get_tables ) { $html .= $q->start_table( { -width => '100%' } ). $q->Tr( { -bgcolor => 'khaki' }, $q->td( $q->h2('Tables') ) ); @@ -55,7 +58,7 @@ sub produce { } for my $table ( $schema->get_tables ) { - my $table_name = $table->name or next; + my $table_name = $table->name or next; my @fields = $table->get_fields or next; $html .= $q->table( { -width => '100%' }, @@ -66,7 +69,7 @@ sub produce { ) ); - if ( my @comments = $table->comments ) { + if ( my @comments = map { $_ ? $_ : () } $table->comments ) { $html .= 'Comments:
'.join('
', @comments).'
'; } @@ -86,23 +89,24 @@ sub produce { ); for my $field ( @fields ) { - my $name = $field->name; + my $name = $field->name || ''; $name = qq[
$name]; - my $data_type = $field->data_type; - my $size = $field->size; - my $default = $field->default_value; - my $comment = $field->comments || ''; + my $data_type = $field->data_type || ''; + my $size = defined $field->size ? $field->size : ''; + my $default = defined $field->default_value + ? $field->default_value : ''; + my $comment = $field->comments || ''; + my $fk = ''; - my $fk; if ( $field->is_foreign_key ) { - my $c = $field->foreign_key_reference; - my $ref_table = $c->reference_table || ''; - my $ref_field = ($c->reference_fields)[0]; - $fk = + my $c = $field->foreign_key_reference; + my $ref_table = $c->reference_table || ''; + my $ref_field = ($c->reference_fields)[0] || ''; + $fk = qq[$ref_table.$ref_field]; } - my @other; + my @other = (); push @other, 'PRIMARY KEY' if $field->is_primary_key; push @other, 'UNIQUE' if $field->is_unique; push @other, 'NOT NULL' unless $field->is_nullable; @@ -125,9 +129,12 @@ sub produce { ); for my $index ( @indices ) { + my $name = $index->name || ''; + my $fields = join( ', ', $index->fields ) || ''; + $html .= $q->Tr( { -bgcolor => 'white' }, - $q->td( [ $index->name, join( ', ', $index->fields ) ] ) + $q->td( [ $name, $fields ] ) ); }