X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FTranslator%2FUtils.pm;h=cefa2846445ba10754056a24971e049d6dd917a8;hb=87c5565efa0003b1cf1fcbd08b3b6891cd0c957b;hp=b7180c6a954596e9c80896acc3b8ae3b943b678d;hpb=e545d97102e739832c4f86dd4c18efae9890b4d2;p=dbsrgits%2FSQL-Translator.git diff --git a/lib/SQL/Translator/Utils.pm b/lib/SQL/Translator/Utils.pm index b7180c6..cefa284 100644 --- a/lib/SQL/Translator/Utils.pm +++ b/lib/SQL/Translator/Utils.pm @@ -1,9 +1,9 @@ package SQL::Translator::Utils; # ---------------------------------------------------------------------- -# $Id: Utils.pm,v 1.7 2003-05-12 15:47:23 dlc Exp $ +# $Id: Utils.pm,v 1.12 2004-02-09 23:04:26 kycl4rk Exp $ # ---------------------------------------------------------------------- -# Copyright (C) 2003 darren chamberlain +# 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 @@ -26,7 +26,7 @@ use vars qw($VERSION $DEFAULT_COMMENT @EXPORT_OK); use Exporter; -$VERSION = 1.00; +$VERSION = sprintf "%d.%02d", q$Revision: 1.12 $ =~ /(\d+)\.(\d+)/; $DEFAULT_COMMENT = '-- '; @EXPORT_OK = qw( debug normalize_name header_comment parse_list_arg $DEFAULT_COMMENT @@ -72,7 +72,7 @@ sub debug { # ---------------------------------------------------------------------- sub normalize_name { - my $name = shift; + my $name = shift or return ''; # The name can only begin with a-zA-Z_; if there's anything # else, prefix with _ @@ -116,13 +116,31 @@ HEADER_COMMENT } # ---------------------------------------------------------------------- +# parse_list_arg +# +# Meant to accept a list, an array reference, or a string of +# comma-separated values. Retuns an array reference of the +# arguments. Modified to also handle a list of references. +# ---------------------------------------------------------------------- sub parse_list_arg { my $list = UNIVERSAL::isa( $_[0], 'ARRAY' ) ? shift : [ @_ ]; - return [ map { s/^\s+|\s+$//g; $_ } - map { split /,/ } - grep { defined && length } @$list - ]; + # + # This protects stringification of references. + # + if ( @$list && ref $list->[0] ) { + return $list; + } + # + # This processes string-like arguments. + # + else { + return [ + map { s/^\s+|\s+$//g; $_ } + map { split /,/ } + grep { defined && length } @$list + ]; + } } 1;