# # 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 %params = @_; 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::JSJSONArrayParser is available eval { require videosite::JSJSONArrayParser; }; unless($@) { # Available. Return a JSJSONArrayParser object return videosite::JSJSONArrayParser->new(%params); } # See if videosite::JSLexArrayParser is available eval { require videosite::JSLexArrayParser; }; unless($@) { # Available. Return a JSLexArrayParser object return videosite::JSLexArrayParser->new(%params); } # See if JSSimleArrayParser is available eval { require videosite::JSSimpleArrayParser; }; unless ($@) { # Available. Return a JSSimpleArrayParser object return videosite::JSSimpleArrayParser->new(%params); } # Nothing available. Return ourselves. return bless($self, $class); } sub parse { my $self = shift; # No functionality here return undef; } 1;