Class-MakeMethods
view release on metacpan or search on metacpan
MakeMethods/Template/Universal.pm view on Meta::CPAN
'_SELF_CLASS_' => '(ref _SELF_ || _SELF_)',
'_SELF_INSTANCE_' => '(ref _SELF_ ? _SELF_ : undef)',
'_CLASS_FROM_INSTANCE_' => '(ref _SELF_ || croak "Can\'t invoke _STATIC_ATTR_{name} as a class method")',
'_ATTR_{}' => '$m_info->{*}',
'_STATIC_ATTR_{}' => '_ATTR_{*}',
'_ATTR_REQUIRED_{}' =>
'(_ATTR_{*} or Carp::croak("No * parameter defined for _ATTR_{name}"))',
'_ATTR_DEFAULT_{}' =>
sub { my @a = split(' ',$_[0],2); "(_ATTR_{$a[0]} || $a[1])" },
_ACCESS_PRIVATE_ => '( ( (caller)[0] eq _ATTR_{target_class} ) or croak "Attempted access to private method _ATTR_{name}")',
_ACCESS_PROTECTED_ => '( UNIVERSAL::isa((caller)[0], _ATTR_{target_class}) or croak "Attempted access to protected method _ATTR_{name}" )',
'_CALL_METHODS_FROM_HASH_' => q{
# Accept key-value attr list, or reference to unblessed hash of attrs
my @args = (scalar @_ == 1 and ref($_[0]) eq 'HASH') ? %{$_[0]} : @_;
while ( scalar @args ) { local $_ = shift(@args); $self->$_( shift(@args) ) }
},
},
'modifier' => {
'self_closure' => q{ my @args = @_; return sub { unshift @_, @args; * } },
( run in 1.573 second using v1.01-cache-2.11-cpan-1e74a51a04c )