diff options
Diffstat (limited to 'lib/ManaTools')
| -rw-r--r-- | lib/ManaTools/Shared/Action.pm | 30 | ||||
| -rw-r--r-- | lib/ManaTools/Shared/ActionsRole.pm | 4 | ||||
| -rw-r--r-- | lib/ManaTools/Shared/UserLevel.pm | 90 | 
3 files changed, 95 insertions, 29 deletions
| diff --git a/lib/ManaTools/Shared/Action.pm b/lib/ManaTools/Shared/Action.pm index 1c211296..1b0f6a07 100644 --- a/lib/ManaTools/Shared/Action.pm +++ b/lib/ManaTools/Shared/Action.pm @@ -65,8 +65,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  use Moose; -use Moose::Util::TypeConstraints; -use MooseX::ClassAttribute; +use ManaTools::Shared::UserLevel;  has 'name' => (      is => 'ro', @@ -110,43 +109,18 @@ has 'valid' => (      }  ); -subtype 'LevelType' -    => as Int -    => where {($_ > 0 && $_ <= 3)}; -  has 'level' => (      traits => ['Code'],      is => 'ro',      isa => 'CodeRef',      required => 0,      default => sub { -        return sub { return 1; }; +        return sub { return ManaTools::Shared::UserLevel->beginnerLevel; };      },      handles => {          is_level => 'execute'      }  ); -class_has 'beginnerLevel' => ( -    is => 'ro', -    isa => 'LevelType', -    init_arg => undef, -    default => sub {return 1;}, -); - -class_has 'advancedLevel' => ( -    is => 'ro', -    isa => 'LevelType', -    init_arg => undef, -    default => sub {return 2;}, -); - -class_has 'expertLevel' => ( -    is => 'ro', -    isa => 'LevelType', -    init_arg => undef, -    default => sub {return 3;}, -); -  1; diff --git a/lib/ManaTools/Shared/ActionsRole.pm b/lib/ManaTools/Shared/ActionsRole.pm index 30f3789d..1599e22a 100644 --- a/lib/ManaTools/Shared/ActionsRole.pm +++ b/lib/ManaTools/Shared/ActionsRole.pm @@ -64,6 +64,8 @@ use Moose::Role;  use MooseX::ClassAttribute;  use ManaTools::Shared::Action; +use ManaTools::Shared::UserLevel; +  class_has 'acts' => (      is => 'ro',      init_arg => undef, @@ -77,7 +79,7 @@ has 'level' => (      init_arg => undef,      lazy => 1,      isa => 'LevelType', -    default => sub {return ManaTools::Shared::Action->beginnerLevel;} +    default => sub {return ManaTools::Shared::UserLevel->beginnerLevel;}  );  #============================================================= diff --git a/lib/ManaTools/Shared/UserLevel.pm b/lib/ManaTools/Shared/UserLevel.pm new file mode 100644 index 00000000..21c0a7cc --- /dev/null +++ b/lib/ManaTools/Shared/UserLevel.pm @@ -0,0 +1,90 @@ +# vim: set et ts=4 sw=4: +package ManaTools::Shared::UserLevel; + +#============================================================= -*-perl-*- + +=head1 NAME + +    ManaTools::Shared::UserLevel - an UserLevel helper class + +=head1 SYNOPSIS + +    use ManaTools::Shared::UserLevel; + +    has 'level' => ( +        isa => 'LevelType', +        default => ManaTools::Shared::UserLevel->beginnerLevel, +    ); + +    my $level = ManaTools::Shared::UserLevel->expertLevel; +    if ($level > ManaTools::Shared::UserLevel->advancedLevel) { ... } + + +=head1 DESCRIPTION + +    This helper class is used to abstract the UserLevel + +=head1 SUPPORT + +    You can find documentation for this plugin with the perldoc command: + +    perldoc ManaTools::Shared::UserLevel + + +=head1 AUTHOR + +    Maarten Vanraes <alien@rmail.be> + +=head1 COPYRIGHT and LICENSE + +Copyright (c) 2015 Maarten Vanraes <alien@rmail.be> + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License version 2, as +published by the Free Software Foundation. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +=head1 METHODS + +=cut + +use Moose; + +use Moose::Util::TypeConstraints; +use MooseX::ClassAttribute; + +subtype 'LevelType' +    => as Int +    => where {($_ > 0 && $_ <= 3)}; + +class_has 'beginnerLevel' => ( +    is => 'ro', +    isa => 'LevelType', +    init_arg => undef, +    default => sub {return 1;}, +); + +class_has 'advancedLevel' => ( +    is => 'ro', +    isa => 'LevelType', +    init_arg => undef, +    default => sub {return 2;}, +); + +class_has 'expertLevel' => ( +    is => 'ro', +    isa => 'LevelType', +    init_arg => undef, +    default => sub {return 3;}, +); + +1; + | 
