Mouseをわかりやすくするラッパーかいたよー
http://d.hatena.ne.jp/gfx/20111119/1321681656
「MouseはいいけどDSLはちょっと」というbonnuさんやxaicronさんのためのラッパーかいたよ〜。
package MouseX::Simple;
use strict;
use warnings;
use utf8;
use 5.15.1;
use Mouse ();
sub new {
my $class = shift;
my %args = @_==1 ? %{$_[0]} : @_;
return bless {%args}, $class;
}
sub mk_accessors {
my $class = shift;
my $meta = Mouse->init_meta(for_class => $class);
for my $name (@_) {
$meta->add_attribute($name, +{is => 'rw'});
}
}
sub mk_wo_accessors {
my $class = shift;
my $meta = Mouse->init_meta(for_class => $class);
for my $name (@_) {
$meta->add_attribute($name, +{is => 'wo'});
}
}
sub mk_ro_accessors {
my $class = shift;
my $meta = Mouse->init_meta(for_class => $class);
for my $name (@_) {
$meta->add_attribute($name, +{is => 'ro'});
}
}
1;
__END__
=head1 SYNOPSIS
package MyApp;
use parent qw(MouseX::Simple);
__PACKAGE__->mk_accessors(qw(foo bar));
#!/usr/bin/perl
use strict;
use warnings;
use utf8;
use 5.016000;
use lib 'lib';
use Test::More;
package MyObject {
use parent qw(MouseX::Simple);
__PACKAGE__->mk_accessors(qw(x y));
};
my $o = MyObject->new(x => 1, y => 53);
is($o->x, 1);
$o->x(4);
is($o->x, 4);
is($o->y, 53);
done_testing;
Published: 2011-11-19(Sat) 06:26