GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
TAP::Parser::ResultFactory(3) User Contributed Perl Documentation TAP::Parser::ResultFactory(3)

TAP::Parser::ResultFactory - Factory for creating TAP::Parser output objects

  use TAP::Parser::ResultFactory;
  my $token   = {...};
  my $factory = TAP::Parser::ResultFactory->new;
  my $result  = $factory->make_result( $token );

Version 3.42

This is a simple factory class which returns a TAP::Parser::Result subclass representing the current bit of test data from TAP (usually a single line). It is used primarily by TAP::Parser::Grammar. Unless you're subclassing, you probably won't need to use this module directly.

"new"

Creates a new factory class. Note: You currently don't need to instantiate a factory in order to use it.

"make_result"

Returns an instance the appropriate class for the test token passed in.

  my $result = TAP::Parser::ResultFactory->make_result($token);

Can also be called as an instance method.

"class_for"

Takes one argument: $type. Returns the class for this $type, or "croak"s with an error.

"register_type"

Takes two arguments: $type, $class

This lets you override an existing type with your own custom type, or register a completely new type, eg:

  # create a custom result type:
  package MyResult;
  use strict;
  use base 'TAP::Parser::Result';

  # register with the factory:
  TAP::Parser::ResultFactory->register_type( 'my_type' => __PACKAGE__ );

  # use it:
  my $r = TAP::Parser::ResultFactory->( { type => 'my_type' } );

Your custom type should then be picked up automatically by the TAP::Parser.

Please see "SUBCLASSING" in TAP::Parser for a subclassing overview.

There are a few things to bear in mind when creating your own "ResultFactory":

1.
The factory itself is never instantiated (this may change in the future). This means that "_initialize" is never called.
2.
"TAP::Parser::Result->new" is never called, $tokens are reblessed. This will change in a future version!
3.
TAP::Parser::Result subclasses will register themselves with TAP::Parser::ResultFactory directly:

  package MyFooResult;
  TAP::Parser::ResultFactory->register_type( foo => __PACKAGE__ );
    

Of course, it's up to you to decide whether or not to ignore them.

  package MyResultFactory;

  use strict;

  use MyResult;

  use base 'TAP::Parser::ResultFactory';

  # force all results to be 'MyResult'
  sub class_for {
    return 'MyResult';
  }

  1;

TAP::Parser, TAP::Parser::Result, TAP::Parser::Grammar
2018-03-19 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.