package HTML::FormHandler::Moose::Role; use Moose::Role; use Moose::Exporter; =head1 NAME HTML::FormHandler::Moose::Role - to add FormHandler sugar to Roles =head1 SYNOPSIS Enables the use of field specification sugar (has_field) in roles. Use this module instead of C< use Moose::Role; > package MyApp::Form::Foo; use HTML::FormHandler::Moose::Role; has_field 'username' => ( type => 'Text', ... ); has_field 'something_else' => ( ... ); no HTML::FormHandler::Moose::Role; 1; =cut Moose::Exporter->setup_import_methods( with_caller => [ 'has_field', 'apply' ], also => 'Moose::Role', ); sub init_meta { my $class = shift; my %options = @_; Moose::Role->init_meta( %options ); my $meta = Moose::Util::MetaRole::apply_metaclass_roles( for_class => $options{for_class}, metaclass_roles => ['HTML::FormHandler::Meta::Role'], ); return $meta; } sub has_field { my ( $class, $name, %options ) = @_; $class->meta->add_to_field_list( { name => $name, %options } ); } sub apply { my ( $class, $arrayref ) = @_; $class->meta->add_to_apply_list( @{$arrayref} ); } =head1 AUTHOR Gerda Shank, gshank@cpan.org =head1 COPYRIGHT This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =cut 1;