conflict on some things
[gitmo/Moose.git] / lib / oose.pm
index 530b33e..cd87abc 100644 (file)
 package oose;
+
 use strict;
-our $VERSION = '0.0.1';
+use warnings;
+
+use Class::Load qw(load_class);
 
 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/^\+//;
+            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
+1;
 
-oose - syntactic sugar to make Moose Onliners easier
+# ABSTRACT: syntactic sugar to make Moose one-liners easier
 
+__END__
 
-=head1 VERSION
+=pod
 
-This document describes oose version 0.0.1
+=head1 SYNOPSIS
 
+  # 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 SYNOPSIS
+  # 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'
 
-    perl -Moose=Foo -e 'has bar => ( is=>q[ro], default => q[baz] ); print Foo->new->bar' # prints baz
+  # 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 DESCRIPTION
 
-oose.pm is a Source filter that simply adds C<package $name; use Moose;> to the beginning of your script
-and was entirely created because typing perl -e'package Foo; use Moose; ...' was annoying me.
+oose.pm is a simple source filter that adds
+C<package $name; use Moose; use Moose::Util::TypeConstraints;>
+to the beginning of your script and was entirely created because typing
+C<perl -e'package Foo; use Moose; ...'> was annoying me.
 
-=head1 INTERFACE 
+=head1 INTERFACE
 
-oose provides exactly one method and it's automically called by perl:
-=over 
+oose provides exactly one method and it's automatically called by perl:
 
-=item import(str)
+=over 4
 
-pass a package name to import to be used by the source filter
+=item B<import($package)>
 
-=back
-
-=head1 CONFIGURATION AND ENVIRONMENT
+Pass a package name to import to be used by the source filter. The
+package defaults to C<Class> if none is given.
 
-=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.
+=back
 
 =head1 DEPENDENCIES
 
-=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. ]
-
 You will need L<Filter::Simple> and eventually L<Moose>
 
-
 =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<bug-oose@rt.cpan.org>, or through the web interface at
-L<http://rt.cpan.org>.
-
-
-=head1 AUTHOR
-
-Chris Prather  C<< <perigrin@cpan.org> >>
-
-
-=head1 LICENCE AND COPYRIGHT
-
-Copyright (c) 2007, Chris Prather C<< <perigrin@cpan.org> >>. All rights reserved.
-
-This module is free software; you can redistribute it and/or
-modify it under the same terms as Perl itself. See L<perlartistic>.
-
-
-=head1 DISCLAIMER OF WARRANTY
+=head1 BUGS
 
-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.
+See L<Moose/BUGS> for details on reporting bugs.
 
-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