X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FTranslator%2FUtils.pm;h=cefa2846445ba10754056a24971e049d6dd917a8;hb=54e61f1f4b69d31426a8dfd6d947198f4b73c417;hp=87ec225f8b85e785bdeac08ec9b046fef9d21a85;hpb=a2ba36baf2c2441da5b22442764ae0e8857ce12c;p=dbsrgits%2FSQL-Translator.git diff --git a/lib/SQL/Translator/Utils.pm b/lib/SQL/Translator/Utils.pm index 87ec225..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.3 2003-04-25 11:44:20 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,9 +26,11 @@ 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 $DEFAULT_COMMENT); +@EXPORT_OK = qw( + debug normalize_name header_comment parse_list_arg $DEFAULT_COMMENT +); # ---------------------------------------------------------------------- # debug(@msg) @@ -68,9 +70,9 @@ 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 _ @@ -89,6 +91,7 @@ sub normalize_name { return $name; } +# ---------------------------------------------------------------------- sub header_comment { my $producer = shift || caller; my $comment_char = shift; @@ -112,9 +115,39 @@ HEADER_COMMENT return $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 : [ @_ ]; + + # + # 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; -__END__ +# ---------------------------------------------------------------------- + +=pod =head1 NAME @@ -139,7 +172,7 @@ Nothing is exported by default. C takes 0 or more messages, which will be sent to STDERR using C. Occurances of the strings I, I, and I will be replaced by the calling package, subroutine, and line number, -respectively, as reported by C. +respectively, as reported by C. For example, from within C in F, at line 666: @@ -191,22 +224,42 @@ this use). For example, this: use SQL::Translator::Utils qw(header_comment $DEFAULT_COMMENT); print header_comment(__PACKAGE__, - $DEFAULT_COMMENT, + $DEFAULT_COMMENT, "Hi mom!"); produces: - -- + -- -- Created by My::Prodcuer -- Created on Fri Apr 25 06:56:02 2003 - -- + -- -- Hi mom! - -- + -- Note the gratuitous spacing. +=head2 parse_list_arg + +Takes a string, list or arrayref (all of which could contain +comma-separated values) and returns an array reference of the values. +All of the following will return equivalent values: + + parse_list_arg('id'); + parse_list_arg('id', 'name'); + parse_list_arg( 'id, name' ); + parse_list_arg( [ 'id', 'name' ] ); + parse_list_arg( qw[ id name ] ); + =head2 $DEFAULT_COMMENT This is the default comment string, '-- ' by default. Useful for C. +=head1 AUTHORS + +Darren Chamberlain Edarren@cpan.orgE, +Ken Y. Clark Ekclark@cpan.orgE. + +=cut + +=cut