X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2Foose.pm;h=9ed0236ea55549585835333c8154fb89a4474b70;hb=3c5756bb90eb16a9b0133fbda38d667bd745b8cd;hp=530b33e58bea8517bd9a172ecde69a9306ff5540;hpb=3eca5b1cee218b12c9c07c37c47b87d315b44195;p=gitmo%2FMoose.git diff --git a/lib/oose.pm b/lib/oose.pm index 530b33e..9ed0236 100644 --- a/lib/oose.pm +++ b/lib/oose.pm @@ -1,128 +1,90 @@ package oose; + use strict; -our $VERSION = '0.0.1'; +use warnings; + +use Class::MOP; + +our $VERSION = '1.14'; +$VERSION = eval $VERSION; +our $AUTHORITY = 'cpan:STEVAN'; BEGIN { my $package; - sub import { $package = $_[1] } - use Filter::Simple sub { s/^/package $package;\nuse Moose;\n/; } + sub import { + $package = $_[1] || 'Class'; + if ($package =~ /^\+/) { + $package =~ s/^\+//; + Class::MOP::load_class($package); + } + } + use Filter::Simple sub { s/^/package $package;\nuse Moose;use Moose::Util::TypeConstraints;\n/; } } -1; # Magic true value required at end of module -__END__ - -=head1 NAME -oose - syntactic sugar to make Moose Onliners easier +1; +__END__ -=head1 VERSION +=pod -This document describes oose version 0.0.1 +=head1 NAME +oose - syntactic sugar to make Moose one-liners easier =head1 SYNOPSIS - perl -Moose=Foo -e 'has bar => ( is=>q[ro], default => q[baz] ); print Foo->new->bar' # prints baz + # create a Moose class on the fly ... + perl -Moose=Foo -e 'has bar => ( is=>q[ro], default => q[baz] ); print Foo->new->bar' # prints baz -=head1 DESCRIPTION + # loads an existing class (Moose or non-Moose) + # and re-"opens" the package definition to make + # debugging/introspection easier + perl -Moose=+My::Class -e 'print join ", " => __PACKAGE__->meta->get_method_list' -oose.pm is a Source filter that simply adds C to the beginning of your script -and was entirely created because typing perl -e'package Foo; use Moose; ...' was annoying me. + # also loads Moose::Util::TypeConstraints to allow subtypes etc + perl -Moose=Person -e'subtype q[ValidAge] => as q[Int] => where { $_ > 0 && $_ < 78 }; has => age ( isa => q[ValidAge], is => q[ro]); Person->new(age => 90)' -=head1 INTERFACE +=head1 DESCRIPTION -oose provides exactly one method and it's automically called by perl: -=over +oose.pm is a simple source filter that adds C +to the beginning of your script and was entirely created because typing +C was annoying me. -=item import(str) +=head1 INTERFACE -pass a package name to import to be used by the source filter +oose provides exactly one method and it's automatically called by perl: -=back +=over 4 -=head1 CONFIGURATION AND ENVIRONMENT +=item B -=for author to fill in: - A full explanation of any configuration system(s) used by the - module, including the names and locations of any configuration - files, and the meaning of any environment variables or properties - that can be set. These descriptions must also include details of any - configuration language used. - -oose requires no configuration files or environment variables. +Pass a package name to import to be used by the source filter. -=head1 DEPENDENCIES +=back -=for author to fill in: - A list of all the other modules that this module relies upon, - including any restrictions on versions, and an indication whether - the module is part of the standard Perl distribution, part of the - module's distribution, or must be installed separately. ] +=head1 DEPENDENCIES You will need L and eventually L - =head1 INCOMPATIBILITIES -=for author to fill in: - A list of any modules that this module cannot be used in conjunction - with. This may be due to name conflicts in the interface, or - competition for system or program resources, or due to internal - limitations of Perl (for example, many modules that use source code - filters are mutually incompatible). - None reported. But it is a source filter and might have issues there. -=head1 BUGS AND LIMITATIONS - -=for author to fill in: - A list of known problems with the module, together with some - indication Whether they are likely to be fixed in an upcoming - release. Also a list of restrictions on the features the module - does provide: data types that cannot be handled, performance issues - and the circumstances in which they may arise, practical - limitations on the size of data sets, special cases that are not - (yet) handled, etc. - -No bugs have been reported. - -Please report any bugs or feature requests to -C, or through the web interface at -L. +=head1 BUGS +See L for details on reporting bugs. =head1 AUTHOR -Chris Prather C<< >> - - -=head1 LICENCE AND COPYRIGHT - -Copyright (c) 2007, Chris Prather C<< >>. All rights reserved. +Chris Prather C<< >> -This module is free software; you can redistribute it and/or -modify it under the same terms as Perl itself. See L. +=head1 COPYRIGHT AND LICENSE +Copyright 2007-2009 by Infinity Interactive, Inc. -=head1 DISCLAIMER OF WARRANTY +L -BECAUSE THIS SOFTWARE IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE SOFTWARE, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE SOFTWARE "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER -EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE -ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE IS WITH -YOU. SHOULD THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL -NECESSARY SERVICING, REPAIR, OR CORRECTION. +This library is free software; you can redistribute it and/or modify +it under the same terms as Perl itself. -IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE SOFTWARE AS PERMITTED BY THE ABOVE LICENCE, BE -LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL, -OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE -THE SOFTWARE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE SOFTWARE TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. +=cut