Skip to content

Instantly share code, notes, and snippets.

@Getty
Created February 11, 2011 00:30
Show Gist options
  • Save Getty/821693 to your computer and use it in GitHub Desktop.
Save Getty/821693 to your computer and use it in GitHub Desktop.
package Sugar::Cane;
# ABSTRACT: EXPERIMENTAL What you need to produce Sugar
use Moose ();
use Moose::Exporter;
use Moose::Util;
use Data::Printer;
my ( $import, $unimport, $init_meta ) = Moose::Exporter->setup_import_methods(
with_meta => [ 'attributes' ],
as_is => [ 'has' ],
);
sub import {
my $sugar_class = caller;
Moose::Exporter->setup_import_methods(
exporting_package => $sugar_class,
with_meta => [ 'has' ],
class_metaroles => {
class => [ 'Sugar::Cane::Meta::Trait::Class' ],
},
also => [ 'Moose' ],
);
goto $import;
}
sub has {
my ( $meta, $name, %args ) = @_;
p %args;
Moose::has($meta,$name => %args);
}
sub attributes {
my ( $meta, %args ) = @_;
$meta->sugar_default_attributes(\%args);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment