Acme-MetaSyntactic
view release on metacpan or search on metacpan
lib/Acme/MetaSyntactic/Alias.pm view on Meta::CPAN
package Acme::MetaSyntactic::Alias;
use strict;
use warnings;
use Carp;
our $VERSION = '1.000';
sub init {
my ( $self, $alias ) = @_;
my $class = caller(0);
eval "require Acme::MetaSyntactic::$alias;";
croak "Aliased theme Acme::MetaSyntactic::$alias failed to load: $@"
if $@;
no strict 'refs';
no warnings;
# copy almost everything over from the original
for my $k ( grep { ! /^(?:Theme|meta|import)$/ }
keys %{"Acme::MetaSyntactic::$alias\::"} )
{
*{"$class\::$k"} = *{"Acme::MetaSyntactic::$alias\::$k"};
}
# local things
${"$class\::Theme"} = ( split /::/, $class )[-1];
${"$class\::meta"} = $class->new();
*{"$class\::import"} = sub {
my $callpkg = caller(0);
my $theme = ${"$class\::Theme"};
my $meta = $class->new();
*{"$callpkg\::meta$theme"} = sub { $meta->name(@_) };
};
}
1;
__END__
lib/Acme/MetaSyntactic/List.pm view on Meta::CPAN
use Acme::MetaSyntactic (); # do not export metaname and friends
use Acme::MetaSyntactic::RemoteList;
use List::Util qw( shuffle );
use Carp;
our @ISA = qw( Acme::MetaSyntactic::RemoteList );
our $VERSION = '1.001';
sub init {
my ($self, $data) = @_;
my $class = caller(0);
$data ||= Acme::MetaSyntactic->load_data($class);
croak "The optional argument to init() must be a hash reference"
if ref $data ne 'HASH';
no strict 'refs';
no warnings;
${"$class\::Theme"} = ( split /::/, $class )[-1];
@{"$class\::List"} = do { my %seen;
grep !$seen{$_}++, split /\s+/, $data->{names} };
*{"$class\::import"} = sub {
my $callpkg = caller(0);
my $theme = ${"$class\::Theme"};
my $meta = $class->new();
*{"$callpkg\::meta$theme"} = sub { $meta->name(@_) };
};
${"$class\::meta"} = $class->new();
}
sub name {
my ( $self, $count ) = @_;
my $class = ref $self;
lib/Acme/MetaSyntactic/MultiList.pm view on Meta::CPAN
use Acme::MetaSyntactic (); # do not export metaname and friends
use Acme::MetaSyntactic::RemoteList;
use List::Util qw( shuffle );
use Carp;
our @ISA = qw( Acme::MetaSyntactic::RemoteList );
our $VERSION = '1.000';
sub init {
my ($self, $data) = @_;
my $class = caller(0);
$data ||= Acme::MetaSyntactic->load_data($class);
no strict 'refs';
# note: variables mentioned twice to avoid a warning
my $sep = ${"$class\::Separator"} = ${"$class\::Separator"} ||= '/';
my $tail = qr/$sep?[^$sep]*$/;
# compute all categories
lib/Acme/MetaSyntactic/MultiList.pm view on Meta::CPAN
push @{ ${"$class\::MultiList"}{$k} }, @items;
$k =~ s!$tail!!;
}
}
}
${"$class\::Default"} = ${"$class\::Default"} = $data->{default} || ':all';
${"$class\::Theme"} = ${"$class\::Theme"} = ( split /::/, $class )[-1];
*{"$class\::import"} = sub {
my $callpkg = caller(0);
my $theme = ${"$class\::Theme"};
my $meta = $class->new;
*{"$callpkg\::meta$theme"} = sub { $meta->name(@_) };
};
${"$class\::meta"} = ${"$class\::meta"} = $class->new();
}
sub name {
my ( $self, $count ) = @_;
( run in 0.243 second using v1.01-cache-2.11-cpan-b61123c0432 )