—## ----------------------------------------------------------------------------
# String::CamelCase
# -----------------------------------------------------------------------------
# Mastering programmed by YAMASHINA Hio
#
# Copyright 2006 YAMASHINA Hio
# -----------------------------------------------------------------------------
# $Id$
# -----------------------------------------------------------------------------
package
String::CamelCase;
use
warnings;
use
strict;
our
$VERSION
=
'0.04'
;
our
@EXPORT_OK
=
qw(camelize decamelize wordsplit)
;
1;
sub
wordsplit
{
my
$s
=
shift
;
split
( /[_\s]+|\b|(?<![A-Z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])/,
$s
);
}
sub
camelize
{
my
$s
=
shift
;
join
(
''
,
map
{
ucfirst
$_
}
split
(/(?<=[A-Za-z])_(?=[A-Za-z])|\b/,
$s
));
}
sub
decamelize
{
my
$s
=
shift
;
$s
=~ s{([^a-zA-Z]?)([A-Z]*)([A-Z])([a-z]?)}{
my
$fc
=
pos
(
$s
)==0;
my
(
$p0
,
$p1
,
$p2
,
$p3
) = ($1,
lc
$2,
lc
$3,$4);
my
$t
=
$p0
||
$fc
?
$p0
:
'_'
;
$t
.=
$p3
?
$p1
?
"${p1}_$p2$p3"
:
"$p2$p3"
:
"$p1$p2"
;
$t
;
}ge;
$s
;
}
__END__
=head1 NAME
String::CamelCase - camelcase, de-camelcase
=head1 VERSION
Version 0.03
=head1 SYNOPSIS
use String::CamelCase qw(camelize decamelize wordsplit);
print camelize("some_keyword"); # ==> SomeKeyword
print decamelize("SomeKeyword"); # ==> some_keyword
print wordsplit("some_keyword"); # ==> (some, keyword)
print wordsplit("SomeKeyword"); # ==> (Some, Keyword)
=head1 EXPORT
This module can export two functions, C<camelize> and C<decamelize>.
=head1 FUNCTIONS
=head2 camelize($under_score)
convert from under_score text to CamelCase one.
=head2 decamelize($CamelCase)
convert from CamelCase text to under_score one.
=head2 wordsplit($str)
=head1 AUTHOR
YAMASHINA Hio, C<< <hio at cpan.org> >>
=head1 BUGS
Please report any bugs or feature requests to
C<bug-string-camelcase at rt.cpan.org>, or through the web interface at
I will be notified, and then you'll automatically be notified of progress on
your bug as I make changes.
=head1 SUPPORT
You can find documentation for this module with the perldoc command.
perldoc String::CamelCase
You can also look for information at:
=over 4
=item * AnnoCPAN: Annotated CPAN documentation
=item * CPAN Ratings
=item * RT: CPAN's request tracker
=item * Search CPAN
=back
=head1 SEE ALSO
CamelCase(en.wikipedia.org) L<http://en.wikipedia.org/wiki/CamelCase>
CamelCase(ja.wikipedia.org) L<http://ja.wikipedia.org/wiki/%E3%82%AD%E3%83%A3%E3%83%A1%E3%83%AB%E3%82%B1%E3%83%BC%E3%82%B9>
=head1 COPYRIGHT & LICENSE
Copyright 2006 YAMASHINA Hio, all rights reserved.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
=cut
# -----------------------------------------------------------------------------
# End of File.
# -----------------------------------------------------------------------------