NAME
SQL::Translator::Utils - SQL::Translator Utility functions
SYNOPSIS
use SQL::Translator::Utils qw(debug);
debug("PKG: Bad things happened");
DESCSIPTION
SQL::Translator::Utils
contains utility functions designed to be used from the other modules within the SQL::Translator
modules.
Nothing is exported by default.
EXPORTED FUNCTIONS AND CONSTANTS
debug
debug
takes 0 or more messages, which will be sent to STDERR using warn
. Occurances of the strings PKG, SUB, and LINE will be replaced by the calling package, subroutine, and line number, respectively, as reported by caller(1)
.
For example, from within foo
in SQL/Translator.pm, at line 666:
debug("PKG: Error reading file at SUB/LINE");
Will warn
[SQL::Translator: Error reading file at foo/666]
The entire message is enclosed within [
and ]
for visual clarity when STDERR is intermixed with STDOUT.
normalize_name
normalize_name
takes a string and ensures that it is suitable for use as an identifier. This means: ensure that it starts with a letter or underscore, and that the rest of the string consists of only letters, numbers, and underscores. A string that begins with something other than [a-zA-Z] will be prefixer with an underscore, and all other characters in the string will be replaced with underscores. Finally, a trailing underscore will be removed, because that's ugly.
normalize_name("Hello, world");
Produces:
Hello_world
A more useful example, from the SQL::Translator::Parser::Excel
test suite:
normalize_name("silly field (with random characters)");
returns:
silly_field_with_random_characters
header_comment
Create the header comment. Takes 1 mandatory argument (the producer classname), an optional comment character (defaults to $DEFAULT_COMMENT), and 0 or more additional comments, which will be appended to the header, prefixed with the comment character. If additional comments are provided, then a comment string must be provided ($DEFAULT_COMMENT is exported for this use). For example, this:
package My::Producer;
use SQL::Translator::Utils qw(header_comment $DEFAULT_COMMENT);
print header_comment(__PACKAGE__,
$DEFAULT_COMMENT,
"Hi mom!");
produces:
--
-- Created by My::Prodcuer
-- Created on Fri Apr 25 06:56:02 2003
--
-- Hi mom!
--
Note the gratuitous spacing.
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 ] );
truncate_id_uniquely
Takes a string ($desired_name) and int ($max_symbol_length). Truncates $desired_name to $max_symbol_length by including part of the hash of the full name at the end of the truncated name, giving a high probability that the symbol will be unique. For example,
truncate_id_uniquely( 'a' x 100, 64 )
truncate_id_uniquely( 'a' x 99 . 'b', 64 );
truncate_id_uniquely( 'a' x 99, 64 )
Will give three different results; specifically:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa_7f900025
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa_6191e39a
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa_8cd96af2
$DEFAULT_COMMENT
This is the default comment string, '-- ' by default. Useful for header_comment
.
parse_mysql_version
Used by both Parser::MySQL and Producer::MySQL in order to provide a consistent format for both parser_args->{mysql_parser_version}
and producer_args->{mysql_version}
respectively. Takes any of the following version specifications:
5.0.3
4.1
3.23.2
5
5.001005 (perl style)
30201 (mysql style)
AUTHORS
Darren Chamberlain <darren@cpan.org>, Ken Y. Clark <kclark@cpan.org>.