Acme-MetaSyntactic
view release on metacpan or search on metacpan
lib/Acme/MetaSyntactic.pm view on Meta::CPAN
list in scalar context.
=back
There are also some class methods:
=over 4
=item themes( )
Return the sorted list of all available themes.
=item has_theme( $theme )
Return true if the theme C<$theme> exists.
=item add_theme( theme => [ @items ], ... )
This class method adds a new theme to the list. It also creates and
exports all the convenience functions (C<metaI<theme>()>) needed.
Note that this method can only create themes that implement the
C<Acme::MetaSyntactic::List> behaviour.
=item load_data( $data )
This method is used by the "behaviour" classes (such as
C<Acme::MetaSyntactic::List>) to read the content of the C<DATA>
filehandle and fetch the theme data.
The format is very simple. If the C<DATA> filehandle contains the
following data:
# names
bam zowie plonk
powie kapow # comment
# multi level
abc def
# empty
# multi lingual
fr de
C<load_data()> will return the following data structure (the string
is trimmed, newlines and duplicate whitespace characters are squashed,
and end-of-line comments are removed):
{
names => "bam zowie plonk powie kapow",
multi => {
level => "abc def",
lingual => "fr de",
},
empty => ""
}
For example, C<Acme::MetaSyntactic::List> uses the single parameter C<names>
to fetch the lists of names for creating its subclasses.
The C<init()> method in all "behaviour" classes will also accept an optional
C<$data> hashref and if it provided, will use it instead of reading the
C<__DATA__> section of the module. The actual structure of the hashref
depends on the C<Acme::MetaSyntactic::> class.
=back
Convenience methods also exists for all the themes. The methods are named
after the theme. They are exported only when the theme is actually used
or when it appear in the C<Acme::MetaSyntactic> import list. The first
imported theme is the default, used by the C<metaname()> function.
=head1 EXPORTS
Depending on how C<Acme::MetaSyntactic> is used, several functions can
be exported. All of them behave like the following:
=over 4
=item metaname( [ $theme, ] $count )
Return C<$count> items from theme C<$theme>. If no theme is given,
the theme is "default" theme. See below how to change what the default is.
=back
=head2 Use cases
=over 4
=item C<use Acme::MetaSyntactic;>
This exports the C<metaname()> function only.
=item C<use Acme::MetaSyntactic 'theme';>
This exports the C<metaname()> function and the C<metaI<theme>()>
function. C<metaname()> default to the theme I<theme>.
=item C<use Acme::MetaSyntactic qw(theme1 theme2);>
This exports the C<metaname()>, C<metaI<theme1>()>, C<metaI<theme2>()>
functions. C<metaname()> default to the first theme of the list (I<theme1>).
=item C<use Acme::MetaSyntactic ':all';>
This exports the C<metaname()> function and the meta* functions for
B<all> themes. C<metaname()> default to the standard default theme (C<foo>).
=item C<use Acme::MetaSyntactic::theme;>
This exports the C<metaI<theme>()> function only. The C<metaname()>
function is not exported.
=back
=head1 THEMES
The list of available themes can be obtained with the following one-liner:
$ perl -MAcme::MetaSyntactic -le 'print for Acme::MetaSyntactic->themes'
The themes are all the C<Acme::MetaSyntactic::I<theme>> classes, with
( run in 1.155 second using v1.01-cache-2.11-cpan-39bf76dae61 )