# # This is a stub class for more complex JS*ArrayParser objects. # It's new() method usually does _not_ return an object of # type videosite::JSArrayParser, but rather a child object of itself # which is able to do some actual work. The only time new() retuns # an videosite::JSArrayParser onject is when no child objects are # available. # package videosite::JSArrayParser; use strict; sub new { my $class = shift; my $self = {}; if ($class ne __PACKAGE__) { # We were called from a child object. Return ourselves. return bless($self, $class); } # Try to find a child object which is available and return that. # # See if videosite::JSLexArrayParser is available eval { require videosite::JSLexArrayParser; }; unless($@) { # Available. Return a JSLexArrayParser object return videosite::JSLexArrayParser->new(); } # See if JSSimleArrayParser is available eval { require videosite::JSSimpleArrayParser; }; unless ($@) { # Available. Return a JSSimpleArrayParser object return videosite::JSSimpleArrayParser->new(); } # Nothing available. Return ourselves. return bless($self, $class); } sub parse { my $self = shift; # No functionality here return undef; } 1;