Added boilerplate header, some cosmetic/POD changes.
Ken Youens-Clark [Wed, 20 Aug 2003 21:26:02 +0000 (21:26 +0000)]
lib/SQL/Translator/Producer/TTSchema.pm

index dc9b64e..e41c947 100644 (file)
@@ -1,30 +1,97 @@
 package SQL::Translator::Producer::TTSchema;
 
+# -------------------------------------------------------------------
+# $Id: TTSchema.pm,v 1.2 2003-08-20 21:26:02 kycl4rk Exp $
+# -------------------------------------------------------------------
+# Copyright (C) 2003 Mark Addison <grommit@users.sourceforge.net>,
+#                    Ken Y. Clark <kclark@cpan.org>.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; version 2.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+# 02111-1307  USA
+# -------------------------------------------------------------------
+
 =pod 
 
 =head1 NAME
 
-SQL::Translator::Producer::TTSchema - Produces output using the template toolkit
-from a SQL schema.
+SQL::Translator::Producer::TTSchema - 
+    Produces output using the Template Toolkit from a SQL schema
+
+=head1 SYNOPSIS
+
+  use SQL::Translator;
+  my $translator     = SQL::Translator->new(
+      from           => 'MySQL',
+      filename       => 'foo_schema.sql',
+      to             => 'TTSchema',
+      producer_args  => {
+          ttfile     => 'foo_template.tt',
+      },
+  );
+  print $translator->translate;
+
+=head1 DESCRIPTION
+
+Produces schema output using a given Template Tookit template.
+
+It needs one additional producer_arg of C<ttfile> that is the file
+name of the template to use. This template has one var added to it
+called C<schema>, which is the SQL::Translator::Producer::Schema
+object so you can then template via its methods.
+
+    database: [% schema.database %]
+    tables:
+    [% FOREACH table = schema.get_tables %]
+        [% table.name %]
+        ================
+        [% FOREACH field = table.get_fields %]
+            [% field.name %]   [% field.data_type %]([% field.size %])
+        [% END -%]
+    [% END %]
+
+See F<t/data/template/basic.tt> for a more complete example.
+
+You can also set any of the options used to initiallize the Template object by 
+adding them to your producer_args. See Template Toolkit docs for details of
+the options.
+
+  $translator          = SQL::Translator->new(
+      to               => 'TT',
+      producer_args    => {
+          ttfile       => 'foo_template.tt',
+          INCLUDE_PATH => '/foo/templates/tt',
+          INTERPOLATE  => 1,
+      },
+  );
 
 =cut
 
+# -------------------------------------------------------------------
 
 use strict;
-use warnings;
 
 use vars qw[ $DEBUG $VERSION @EXPORT_OK ];
-#$VERSION = sprintf "%d.%02d", q$Revision: 1.1 $ =~ /(\d+)\.(\d+)/;
-$VERSION = 0.1;
+$VERSION = sprintf "%d.%02d", q$Revision: 1.2 $ =~ /(\d+)\.(\d+)/;
 $DEBUG   = 0 unless defined $DEBUG;
 
+use Template;
 use Data::Dumper;
 use Exporter;
 use base qw(Exporter);
 @EXPORT_OK = qw(produce);
 
 use base qw/SQL::Translator::Producer/;  # Doesn't do anything at the mo!
-use Template;
 
 sub debug {
     warn @_,"\n" if $DEBUG;
@@ -32,82 +99,43 @@ sub debug {
 
 sub produce {
     my $translator = shift;
-    local $DEBUG = $translator->debug;
-    my $scma = $translator->schema;
-    my $args = $translator->producer_args;
-    my $file = delete $args->{ttfile} or die "No template file!";
+    local $DEBUG   = $translator->debug;
+    my $scma       = $translator->schema;
+    my $args       = $translator->producer_args;
+    my $file       = delete $args->{'ttfile'} or die "No template file!";
    
     debug "Processing template $file\n";
     my $out;
-    my $tt = Template->new(
-        DEBUG => $DEBUG,
+    my $tt       = Template->new(
+        DEBUG    => $DEBUG,
         ABSOLUTE => 1, # Set so we can use from the command line sensible.
-        RELATIVE => 1, #   Maybe the cmd line code should set it! Security!
+        RELATIVE => 1, # Maybe the cmd line code should set it! Security!
         %$args,        # Allow any TT opts to be passed in the producer_args
-        
     ) || die "Failed to initialize Template object: ".Template->error;
-    $tt->process($file,{ schema => $scma },\$out) 
-    or die "Error processing template '$file': ".$tt->error;
+
+    $tt->process( $file, { schema => $scma }, \$out ) 
+        or die "Error processing template '$file': ".$tt->error;
 
     return $out;
 };
 
 1;
 
-__END__
+# -------------------------------------------------------------------
 
 =pod
 
-=head1 SYNOPSIS
+=head1 AUTHOR
 
-  use SQL::Translator;
-  $translator = SQL::Translator->new(
-      from      => "MySQL",
-      filename  => "foo_schema.sql",
-      to        => "TT",
-      producer_args  => {
-          ttfile => "foo_template.tt",
-      },
-  );
-  print $translator->translate;
-
-=head1 DESCRIPTION
-
-Produces schema output using a given Template Tookit template.
-
-It needs one additional producer_arg of C<ttfile> that is the file name of the
-template to use. This template has one var added to it called C<schema>, which 
-is the SQL::Translator::Producer::Schema object so you can then template via 
-its methods.
-
-    database: [% schema.database %]
-    tables:
-    [% FOREACH table = schema.get_tables %]
-        [% table.name %]
-        ================
-        [% FOREACH field = table.get_fields %]
-            [% field.name %]   [% field.datatype %]([% field.size %])
-        [% END -%]
-    [% END %]
-
-See F<t/data/template/basic.tt> for a more complete example.
-
-You can also set any of the options used to initiallize the Template object by 
-adding them to your producer_args. See Template Toolkit docs for details of
-the options.
-
-  $translator = SQL::Translator->new(
-      to        => "TT",
-      producer_args  => {
-          ttfile => "foo_template.tt",
-        INCLUDE_PATH => "/foo/templates/tt",
-        INTERPOLATE => 1,
-      },
-  );
+Mark Addison E<lt>grommit@users.sourceforge.netE<gt>.
 
 =head1 TODO
 
 B<More template vars?> e.g. [% tables %] as a shortcut for
 [% schema.get_tables %].
 
+=head1 SEE ALSO
+
+SQL::Translator.
+
 =cut