CGI-Widget

 view release on metacpan or  search on metacpan

Widget.pm  view on Meta::CPAN

package CGI::Widget;

use strict;
use vars qw(@ISA @EXPORT_OK %EXPORT_TAGS $VERSION $AUTOLOAD);
#use vars qw($VERSION $AUTOLOAD);

$VERSION = '0.15';

require Exporter;
@ISA = 'Exporter';
@EXPORT_OK   = qw(AUTOLOAD);
%EXPORT_TAGS = ( 'standard' => [qw(AUTOLOAD)] );

use overload
 '""'     => \&asString,
 fallback => 1;

sub new {
  my $class = shift;
  my $self = bless {}, $class;
  $self->_init(@_);
  return $self;
}

sub import {
  my $exportset = $_[1];
  my $to_package = ((caller)[0]);
  my $code = '';

  return unless $exportset;

  if ($exportset eq ':html' or $exportset eq ':standard') {
    $code = "*".$to_package."::AUTOLOAD = \\&AUTOLOAD_html";
  } elsif ($exportset eq ':wml') {
    $code = "*".$to_package."::AUTOLOAD = \\&AUTOLOAD_wml";
  } elsif ($exportset eq ':javascript') {
    $code = "*".$to_package."::AUTOLOAD = \\&AUTOLOAD_javascript";
  }

  eval $code;
  die $@ if $@;
}

sub AUTOLOAD_html {
  my ($pack,$func) = $AUTOLOAD =~ /(.+)::([^:]+)$/;
  $func =~ s/__/::/g;

  my $req = "CGI::Widget::$func";
  eval "require $req" || die "couldn't find $req : $!";

  return CGI::Widget::html($func) unless $req->can('html');
  return $req->html(@_);
}

sub AUTOLOAD_wml {
  my ($pack,$func) = $AUTOLOAD =~ /(.+)::([^:]+)$/;
  $func =~ s/__/::/g;
    
  my $req = "CGI::Widget::$func";
  eval "require $req" || die "couldn't find $req : $!";

  return CGI::Widget::wml($func) unless $req->can('wml');
  return $req->wml(@_);
}

sub AUTOLOAD_javascript {
  my ($pack,$func) = $AUTOLOAD =~ /(.+)::([^:]+)$/;
  $func =~ s/__/::/g;

  my $req = "CGI::Widget::$func";
  eval "require $req" || die "couldn't find $req : $!";

  return CGI::Widget::javascript($func) unless $req->can('javascript');
  return $req->javascript(@_);
}

sub AUTOLOAD {
  my ($pack,$func) = $AUTOLOAD =~ /(.+)::([^:]+)$/;

  $func =~ s/__/::/g;

  my $req = "CGI::Widget::$func";
  eval "require $req" || die "couldn't find $req : $!";
  return $req->new(@_);
}

sub DESTROY {}



( run in 1.305 second using v1.01-cache-2.11-cpan-6de40a662fe )