package SQL::Translator;
# ----------------------------------------------------------------------
-# $Id: Translator.pm,v 1.43 2003-08-22 20:35:18 kycl4rk Exp $
+# $Id: Translator.pm,v 1.51 2004-02-04 17:51:00 kycl4rk Exp $
# ----------------------------------------------------------------------
-# Copyright (C) 2003 Ken Y. Clark <kclark@cpan.org>,
-# darren chamberlain <darren@cpan.org>,
-# Chris Mungall <cjm@fruitfly.org>
+# Copyright (C) 2003 The 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
require 5.004;
-$VERSION = '0.02';
-$REVISION = sprintf "%d.%02d", q$Revision: 1.43 $ =~ /(\d+)\.(\d+)/;
+$VERSION = '0.04';
+$REVISION = sprintf "%d.%02d", q$Revision: 1.51 $ =~ /(\d+)\.(\d+)/;
$DEBUG = 0 unless defined $DEBUG;
$ERROR = "";
$self->parser ($config->{'parser'} || $config->{'from'} || $DEFAULT_SUB);
$self->producer($config->{'producer'} || $config->{'to'} || $DEFAULT_SUB);
- #
- # Set up callbacks for formatting of pk,fk,table,package names in producer
- #
- $self->format_table_name($config->{'format_table_name'});
- $self->format_package_name($config->{'format_package_name'});
- $self->format_fk_name($config->{'format_fk_name'});
- $self->format_pk_name($config->{'format_pk_name'});
+ #
+ # Set up callbacks for formatting of pk,fk,table,package names in producer
+ #
+ $self->format_table_name($config->{'format_table_name'});
+ $self->format_package_name($config->{'format_package_name'});
+ $self->format_fk_name($config->{'format_fk_name'});
+ $self->format_pk_name($config->{'format_pk_name'});
#
# Set the parser_args and producer_args
if (-d $filename) {
my $msg = "Cannot use directory '$filename' as input source";
return $self->error($msg);
- } elsif (ref($filename) eq 'ARRAY') {
- $self->{'filename'} = $filename;
- $self->debug("Got array of files: ".join(', ',@$filename)."\n");
+ } elsif (ref($filename) eq 'ARRAY') {
+ $self->{'filename'} = $filename;
+ $self->debug("Got array of files: ".join(', ',@$filename)."\n");
} elsif (-f _ && -r _) {
$self->{'filename'} = $filename;
$self->debug("Got filename: '$self->{'filename'}'\n");
local $/;
my $data;
- my @files = ref($filename) eq 'ARRAY' ? @$filename : ($filename);
+ my @files = ref($filename) eq 'ARRAY' ? @$filename : ($filename);
- foreach my $file (@files) {
- unless (open FH, $file) {
- return $self->error("Can't read file '$file': $!");
- }
+ foreach my $file (@files) {
+ unless (open FH, $file) {
+ return $self->error("Can't read file '$file': $!");
+ }
- $data .= <FH>;
+ $data .= <FH>;
- unless (close FH) {
- return $self->error("Can't close file '$file': $!");
- }
- }
+ unless (close FH) {
+ return $self->error("Can't close file '$file': $!");
+ }
+ }
- $self->{'data'} = \$data;
+ $self->{'data'} = \$data;
}
return $self->{'data'};
# Get the data.
# ----------------------------------------------------------------
my $data = $self->data;
- unless (ref($data) eq 'SCALAR' and length $$data) {
- return $self->error("Empty data file!");
- }
# ----------------------------------------------------------------
# Local reference to the parser subroutine
eval { $producer_output = $producer->($self) };
if ($@ || ! $producer_output) {
- my $msg = sprintf "translate: Error with producer '%s': %s",
- $producer_type, ($@) ? $@ : " no results";
+ my $err = $@ || $self->error || "no results";
+ my $msg = "translate: Error with producer '$producer_type': $err";
return $self->error($msg);
}
my $mod = $_;
$mod =~ s/\.pm$//;
my $cur_dir = $File::Find::dir;
- my $base_dir = catfile 'SQL', 'Translator', $uctype;
+ my $base_dir = quotemeta catfile 'SQL', 'Translator', $uctype;
#
# See if the current directory is below the base directory.
SQL are handled (CREATE, ALTER), not the manipulation of data (INSERT,
UPDATE, DELETE).
+This documentation covers the API for SQL::Translator. For a more general
+discussion of how to use the modules and scripts, please see
+L<SQL::Translator::Manual>.
+
=head1 CONSTRUCTOR
The constructor is called C<new>, and accepts a optional hash of options.
=item * Sam Angiuoli <angiuoli@users.sourceforge.net>
+=item * Dave Cash <dave@gnofn.org>
+
=item * Darren Chamberlain <dlc@users.sourceforge.net>
=item * Ken Y. Clark <kclark@cpan.org>