From: Ken Youens-Clark Date: Wed, 20 Aug 2003 21:26:02 +0000 (+0000) Subject: Added boilerplate header, some cosmetic/POD changes. X-Git-Tag: v0.04~277 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=fcc6f51da4e9bb86575ab4faa7345fab5b9df737;p=dbsrgits%2FSQL-Translator.git Added boilerplate header, some cosmetic/POD changes. --- diff --git a/lib/SQL/Translator/Producer/TTSchema.pm b/lib/SQL/Translator/Producer/TTSchema.pm index dc9b64e..e41c947 100644 --- a/lib/SQL/Translator/Producer/TTSchema.pm +++ b/lib/SQL/Translator/Producer/TTSchema.pm @@ -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 , +# Ken Y. Clark . +# +# 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 that is the file +name of the template to use. This template has one var added to it +called C, 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 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 that is the file name of the -template to use. This template has one var added to it called C, 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 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 Egrommit@users.sourceforge.netE. =head1 TODO B e.g. [% tables %] as a shortcut for [% schema.get_tables %]. +=head1 SEE ALSO + +SQL::Translator. + =cut