summaryrefslogtreecommitdiff
path: root/lib/Class/MakeMethods/Template/PackageVar.pm
diff options
context:
space:
mode:
authorAndreas Brachold <vdr07@deltab.de>2007-11-10 17:53:53 +0000
committerAndreas Brachold <vdr07@deltab.de>2007-11-10 17:53:53 +0000
commitcfdd733c17cfa4f1a43b827a656e9e53cc2524ac (patch)
treeb6f659b1281f77628b36768f0888f67b65f9ca48 /lib/Class/MakeMethods/Template/PackageVar.pm
parent9c6c30350161efd74faa3c3705096aecb71c0e81 (diff)
downloadxxv-cfdd733c17cfa4f1a43b827a656e9e53cc2524ac.tar.gz
xxv-cfdd733c17cfa4f1a43b827a656e9e53cc2524ac.tar.bz2
* Remove unsed packages
* Reorder exit routines
Diffstat (limited to 'lib/Class/MakeMethods/Template/PackageVar.pm')
-rw-r--r--lib/Class/MakeMethods/Template/PackageVar.pm168
1 files changed, 0 insertions, 168 deletions
diff --git a/lib/Class/MakeMethods/Template/PackageVar.pm b/lib/Class/MakeMethods/Template/PackageVar.pm
deleted file mode 100644
index da0f7be..0000000
--- a/lib/Class/MakeMethods/Template/PackageVar.pm
+++ /dev/null
@@ -1,168 +0,0 @@
-package Class::MakeMethods::Template::PackageVar;
-
-use Class::MakeMethods::Template::Generic '-isasubclass';
-
-$VERSION = 1.008;
-use strict;
-require 5.0;
-use Carp;
-
-=head1 NAME
-
-Class::MakeMethods::Template::PackageVar - Static methods with global variables
-
-=head1 SYNOPSIS
-
- package MyObject;
- use Class::MakeMethods::Template::PackageVar (
- scalar => [ 'foo' ]
- );
-
- package main;
-
- MyObject->foo('bar')
- print MyObject->foo();
-
- $MyObject::foo = 'bazillion';
- print MyObject->foo();
-
-=head1 DESCRIPTION
-
-These meta-methods provide access to package (class global) variables.
-These are essentially the same as the Static meta-methods, except
-that they use a global variable in the declaring package to store
-their values.
-
-B<Common Parameters>: The following parameters are defined for PackageVar meta-methods.
-
-=over 4
-
-=item variable
-
-The name of the variable to store the value in. Defaults to the same name as the method.
-
-=back
-
-=cut
-
-sub generic {
- {
- '-import' => {
- 'Template::Generic:generic' => '*'
- },
- 'params' => {
- 'variable' => '*'
- },
- 'modifier' => {
- '-all' => [ q{ no strict; * } ],
- },
- 'code_expr' => {
- '_VALUE_' => '${_ATTR_{target_class}."::"._ATTR_{variable}}',
- },
- }
-}
-
-########################################################################
-
-=head2 Standard Methods
-
-The following methods from Generic should all be supported:
-
- scalar
- string
- string_index (?)
- number
- boolean
- bits (?)
- array (*)
- hash (*)
- tiedhash (?)
- hash_of_arrays (?)
- object (?)
- instance (?)
- array_of_objects (?)
- code (?)
- code_or_scalar (?)
-
-See L<Class::MakeMethods::Template::Generic> for the interfaces and behaviors of these method types.
-
-The items marked with a * above are specifically defined in this package, whereas the others are formed automatically by the interaction of this package's generic settings with the code templates provided by the Generic superclass.
-
-The items marked with a ? above have not been tested sufficiently; please inform the author if they do not function as you would expect.
-
-=cut
-
-########################################################################
-
-sub array {
- {
- '-import' => {
- 'Template::Generic:array' => '*',
- },
- 'modifier' => {
- '-all' => q{ no strict; _ENSURE_REF_VALUE_; * },
- },
- 'code_expr' => {
- '_ENSURE_REF_VALUE_' => q{
- _REF_VALUE_ or @{_ATTR_{target_class}."::"._ATTR_{variable}} = ();
- },
- '_VALUE_' => '\@{_ATTR_{target_class}."::"._ATTR_{variable}}',
- },
- }
-}
-
-########################################################################
-
-sub hash {
- {
- '-import' => {
- 'Template::Generic:hash' => '*',
- },
- 'modifier' => {
- '-all' => q{ no strict; _ENSURE_REF_VALUE_; * },
- },
- 'code_expr' => {
- '_ENSURE_REF_VALUE_' => q{
- _REF_VALUE_ or %{_ATTR_{target_class}."::"._ATTR_{variable}} = ();
- },
- '_VALUE_' => '\%{_ATTR_{target_class}."::"._ATTR_{variable}}',
- },
- }
-}
-
-########################################################################
-
-=head2 PackageVar:vars
-
-This rewrite rule converts package variable names into PackageVar methods of the equivalent data type.
-
-Here's an example declaration:
-
- package MyClass;
-
- use Class::MakeMethods::Template::PackageVar (
- vars => '$DEBUG %Index'
- );
-
-MyClass now has methods that get and set the contents of its $MyClass::DEBUG and %MyClass::Index package variables:
-
- MyClass->DEBUG( 1 );
- MyClass->Index( 'foo' => 'bar' );
-
-=cut
-
-sub vars {
- my $mm_class = shift;
- my @rewrite = map [ "Template::PackageVar:$_" ], qw( scalar array hash );
- my %rewrite = ( '$' => 0, '@' => 1, '%' => 2 );
- while (@_) {
- my $name = shift;
- my $data = shift;
- $data =~ s/\A(.)//;
- push @{ $rewrite[ $rewrite{ $1 } ] }, { 'name'=>$name, 'variable'=>$data };
- }
- return @rewrite;
-}
-
-
-1;