1 .\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.3
4 .\" ========================================================================
5 .de Sh \" Subsection heading
13 .de Sp \" Vertical space (when we can't use .PP)
17 .de Vb \" Begin verbatim text
22 .de Ve \" End verbatim text
26 .\" Set up some character translations and predefined strings. \*(-- will
27 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
28 .\" double quote, and \*(R" will give a right double quote. | will give a
29 .\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to
30 .\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C'
31 .\" expand to `' in nroff, nothing in troff, for use with C<>.
33 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
37 . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
38 . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
51 .\" If the F register is turned on, we'll generate index entries on stderr for
52 .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
53 .\" entries marked with X<> in POD. Of course, you'll have to process the
54 .\" output yourself in some meaningful fashion.
57 . tm Index:\\$1\t\\n%\t"\\$2"
63 .\" For nroff, turn off justification. Always turn off hyphenation; it makes
64 .\" way too many mistakes in technical documents.
68 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
69 .\" Fear. Run. Save yourself. No user-serviceable parts.
70 . \" fudge factors for nroff and troff
79 . ds #H ((1u-(\\\\n(.fu%2u))*.13m)
85 . \" simple accents for nroff and troff
95 . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
96 . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
97 . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
98 . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
99 . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
100 . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
102 . \" troff and (daisy-wheel) nroff accents
103 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
104 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
105 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
106 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
107 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
108 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
109 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
110 .ds ae a\h'-(\w'a'u*4/10)'e
111 .ds Ae A\h'-(\w'A'u*4/10)'E
112 . \" corrections for vroff
113 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
114 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
115 . \" for low resolution devices (crt and lpr)
116 .if \n(.H>23 .if \n(.V>19 \
129 .\" ========================================================================
131 .IX Title "TAP::Parser::ResultFactory 3"
132 .TH TAP::Parser::ResultFactory 3 "2009-05-05" "perl v5.8.7" "User Contributed Perl Documentation"
134 TAP::Parser::ResultFactory \- Factory for creating TAP::Parser output objects
136 .IX Header "SYNOPSIS"
138 \& use TAP::Parser::ResultFactory;
139 \& my $token = {...};
140 \& my $factory = TAP::Parser::ResultFactory\->new;
141 \& my $result = $factory\->make_result( $token );
146 .Sh "\s-1DESCRIPTION\s0"
147 .IX Subsection "DESCRIPTION"
148 This is a simple factory class which returns a TAP::Parser::Result subclass
149 representing the current bit of test data from \s-1TAP\s0 (usually a single line).
150 It is used primarily by TAP::Parser::Grammar. Unless you're subclassing,
151 you probably won't need to use this module directly.
153 .IX Subsection "METHODS"
155 .IX Subsection "Class Methods"
156 \fI\f(CI\*(C`new\*(C'\fI\fR
159 Creates a new factory class.
160 \&\fINote:\fR You currently don't need to instantiate a factory in order to use it.
162 \fI\f(CI\*(C`make_result\*(C'\fI\fR
163 .IX Subsection "make_result"
165 Returns an instance the appropriate class for the test token passed in.
168 \& my $result = TAP::Parser::ResultFactory\->make_result($token);
171 Can also be called as an instance method.
173 \fI\f(CI\*(C`class_for\*(C'\fI\fR
174 .IX Subsection "class_for"
176 Takes one argument: \f(CW$type\fR. Returns the class for this \f(CW$type\fR, or \f(CW\*(C`croak\*(C'\fRs
179 \fI\f(CI\*(C`register_type\*(C'\fI\fR
180 .IX Subsection "register_type"
182 Takes two arguments: \f(CW$type\fR, \f(CW$class\fR
184 This lets you override an existing type with your own custom type, or register
185 a completely new type, eg:
188 \& # create a custom result type:
191 \& use vars qw(@ISA);
192 \& @ISA = 'TAP::Parser::Result';
196 \& # register with the factory:
197 \& TAP::Parser::ResultFactory\->register_type( 'my_type' => __PACKAGE__ );
202 \& my $r = TAP::Parser::ResultFactory\->( { type => 'my_type' } );
205 Your custom type should then be picked up automatically by the TAP::Parser.
207 .IX Header "SUBCLASSING"
208 Please see \*(L"\s-1SUBCLASSING\s0\*(R" in TAP::Parser for a subclassing overview.
210 There are a few things to bear in mind when creating your own
211 \&\f(CW\*(C`ResultFactory\*(C'\fR:
214 The factory itself is never instantiated (this \fImay\fR change in the future).
215 This means that \f(CW\*(C`_initialize\*(C'\fR is never called.
218 \&\f(CW\*(C`TAP::Parser::Result\->new\*(C'\fR is never called, \f(CW$tokens\fR are reblessed.
219 This \fIwill\fR change in a future version!
222 TAP::Parser::Result subclasses will register themselves with
223 TAP::Parser::ResultFactory directly:
226 \& package MyFooResult;
227 \& TAP::Parser::ResultFactory\->register_type( foo => __PACKAGE__ );
230 Of course, it's up to you to decide whether or not to ignore them.
232 .IX Subsection "Example"
234 \& package MyResultFactory;
244 \& use TAP::Parser::ResultFactory;
248 \& @ISA = qw( TAP::Parser::ResultFactory );
252 \& # force all results to be 'MyResult'
254 \& return 'MyResult';
262 .IX Header "SEE ALSO"