File Coverage

blib/lib/VoiceXML/Client/Item/Factory.pm
Criterion Covered Total %
statement 172 201 85.5
branch 4 6 66.6
condition 22 60 36.6
subroutine 48 55 87.2
pod 2 28 7.1
total 248 350 70.8


line stmt bran cond sub pod time code
1             package VoiceXML::Client::Item::Factory;
2              
3 3     3   1818 use VoiceXML::Client::Item::Form;
  3         10  
  3         111  
4 3     3   2060 use VoiceXML::Client::Item::Prompt;
  3         8  
  3         73  
5 3     3   1781 use VoiceXML::Client::Item::Field;
  3         9  
  3         96  
6 3     3   1789 use VoiceXML::Client::Item::Break;
  3         8  
  3         85  
7 3     3   3135 use VoiceXML::Client::Item::Option;
  3         8  
  3         70  
8 3     3   1776 use VoiceXML::Client::Item::Filled;
  3         8  
  3         75  
9 3     3   1893 use VoiceXML::Client::Item::If;
  3         9  
  3         85  
10 3     3   1838 use VoiceXML::Client::Item::Elseif;
  3         6  
  3         82  
11 3     3   1751 use VoiceXML::Client::Item::Else;
  3         8  
  3         73  
12 3     3   1790 use VoiceXML::Client::Item::Goto;
  3         9  
  3         80  
13 3     3   1771 use VoiceXML::Client::Item::Submit;
  3         8  
  3         85  
14 3     3   1695 use VoiceXML::Client::Item::Disconnect;
  3         10  
  3         73  
15 3     3   1642 use VoiceXML::Client::Item::Audio;
  3         43  
  3         81  
16 3     3   3640 use VoiceXML::Client::Item::Record;
  3         8  
  3         78  
17 3     3   1674 use VoiceXML::Client::Item::Var;
  3         8  
  3         83  
18 3     3   7463 use VoiceXML::Client::Item::Clear;
  3         10  
  3         81  
19 3     3   1650 use VoiceXML::Client::Item::Block;
  3         9  
  3         98  
20 3     3   1844 use VoiceXML::Client::Item::NoInput;
  3         9  
  3         79  
21 3     3   1695 use VoiceXML::Client::Item::NoMatch;
  3         8  
  3         151  
22 3     3   1674 use VoiceXML::Client::Item::Reprompt;
  3         9  
  3         75  
23 3     3   1607 use VoiceXML::Client::Item::Assign;
  3         10  
  3         72  
24 3     3   4603 use VoiceXML::Client::Item::SubDialog;
  3         8  
  3         127  
25 3     3   1862 use VoiceXML::Client::Item::Return;
  3         9  
  3         77  
26              
27 3     3   5473 use VoiceXML::Client::Item::Grammar;
  3         9  
  3         80  
28 3     3   1986 use VoiceXML::Client::Item::Grammar::Rule;
  3         10  
  3         111  
29              
30              
31             =head1 COPYRIGHT AND LICENSE
32              
33            
34             Copyright (C) 2007,2008 by Pat Deegan.
35             All rights reserved
36             http://voicexml.psychogenic.com
37              
38             This library is released under the terms of the GNU GPL version 3, making it available only for
39             free programs ("free" here being used in the sense of the GPL, see http://www.gnu.org for more details).
40             Anyone wishing to use this library within a proprietary or otherwise non-GPLed program MUST contact psychogenic.com to
41             acquire a distinct license for their application. This approach encourages the use of free software
42             while allowing for proprietary solutions that support further development.
43              
44              
45             This file is part of VoiceXML::Client.
46              
47            
48            
49             VoiceXML::Client is free software: you can redistribute it and/or modify
50             it under the terms of the GNU General Public License as published by
51             the Free Software Foundation, either version 3 of the License, or
52             (at your option) any later version.
53              
54             VoiceXML::Client is distributed in the hope that it will be useful,
55             but WITHOUT ANY WARRANTY; without even the implied warranty of
56             MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
57             GNU General Public License for more details.
58              
59             You should have received a copy of the GNU General Public License
60             along with VoiceXML::Client. If not, see .
61              
62              
63             =cut
64              
65              
66              
67              
68 3     3   19 use strict;
  3         7  
  3         104  
69              
70              
71 3         4955 use vars qw{
72             $VERSION
73 3     3   19 };
  3         6  
74              
75             $VERSION = $VoiceXML::Client::Item::VERSION;
76              
77              
78              
79             =head2 new
80              
81             =cut
82              
83             sub new {
84 3     3 1 7 my $class = shift;
85 3         7 my $defaultItemParent = shift;
86            
87 3         8 my $self = {};
88            
89 3   33     28 bless $self, ref $class || $class;
90            
91 3         21 $self->{'defaultItemParent'} = $defaultItemParent;
92            
93 3         16 return $self;
94             }
95              
96              
97              
98              
99             =head2 newItem NAME XMLELEMENT
100              
101             Creates a new instance.
102              
103              
104             =cut
105              
106             sub newItem {
107 62     62 1 87 my $class = shift;
108 62         89 my $name = shift;
109 62   50     132 my $xmlElement = shift || return VoiceXML::Client::Util::error("VoiceXML::Client::Item::Factory::newItem() Must pass an XML element to new.");
110 62         65 my $parent = shift ;
111            
112 62 50 33     148 if (! $parent && ref $class)
113             {
114 0         0 $parent = $class->{'defaultItemParent'};
115             }
116            
117 62 50       114 return VoiceXML::Client::Util::error("VoiceXML::Client::Item::Factory::newItem() Must pass a name for form object to new.")
118             unless (defined $name);
119            
120            
121 62         121 my $sub = "genitem_" . lc($name);
122            
123 62 100       494 return $class->$sub($xmlElement, $parent) if ($class->can($sub));
124            
125 3         10 return undef;
126            
127             }
128              
129             sub genitem_prompt {
130 4     4 0 7 my $class = shift;
131 4   50     14 my $xmlElement = shift || return;
132 4         8 my $parent = shift ;
133            
134 4         39 return VoiceXML::Client::Item::Prompt->new($xmlElement, $parent);
135             }
136              
137              
138             sub genitem_field {
139 1     1 0 3 my $class = shift;
140 1   50     4 my $xmlElement = shift || return;
141 1         3 my $parent = shift ;
142            
143 1         20 return VoiceXML::Client::Item::Field->new($xmlElement, $parent);
144             }
145              
146             sub genitem_form {
147 7     7 0 11 my $class = shift;
148 7   50     20 my $xmlElement = shift || return;
149 7         11 my $parent = shift ;
150            
151 7         50 return VoiceXML::Client::Item::Form->new($xmlElement, $parent);
152             }
153              
154             sub genitem_break {
155 0     0 0 0 my $class = shift;
156 0   0     0 my $xmlElement = shift || return;
157 0         0 my $parent = shift ;
158            
159 0         0 return VoiceXML::Client::Item::->new($xmlElement, $parent);
160             }
161              
162             sub genitem_option {
163 0     0 0 0 my $class = shift;
164 0   0     0 my $xmlElement = shift || return;
165 0         0 my $parent = shift ;
166            
167 0         0 return VoiceXML::Client::Item::Option->new($xmlElement, $parent);
168             }
169              
170             sub genitem_filled {
171 1     1 0 3 my $class = shift;
172 1   50     5 my $xmlElement = shift || return;
173 1         2 my $parent = shift ;
174            
175 1         13 return VoiceXML::Client::Item::Filled->new($xmlElement, $parent);
176             }
177              
178              
179            
180             sub genitem_if {
181 1     1 0 3 my $class = shift;
182 1   50     3 my $xmlElement = shift || return;
183 1         3 my $parent = shift ;
184            
185 1         10 return VoiceXML::Client::Item::If->new($xmlElement, $parent);
186             }
187              
188             sub genitem_elseif {
189 5     5 0 9 my $class = shift;
190 5   50     11 my $xmlElement = shift || return;
191 5         5 my $parent = shift ;
192            
193 5         23 return VoiceXML::Client::Item::Elseif->new($xmlElement, $parent);
194             }
195              
196             sub genitem_else {
197 1     1 0 3 my $class = shift;
198 1   50     5 my $xmlElement = shift || return;
199 1         2 my $parent = shift ;
200            
201 1         11 return VoiceXML::Client::Item::Else->new($xmlElement, $parent);
202             }
203              
204             sub genitem_goto {
205 1     1 0 4 my $class = shift;
206 1   50     5 my $xmlElement = shift || return;
207 1         2 my $parent = shift ;
208            
209 1         31 return VoiceXML::Client::Item::Goto->new($xmlElement, $parent);
210             }
211              
212             sub genitem_audio {
213 7     7 0 13 my $class = shift;
214 7   50     22 my $xmlElement = shift || return;
215 7         11 my $parent = shift ;
216            
217 7         49 return VoiceXML::Client::Item::Audio->new($xmlElement, $parent);
218             }
219              
220             sub genitem_record {
221 0     0 0 0 my $class = shift;
222 0   0     0 my $xmlElement = shift || return;
223 0         0 my $parent = shift ;
224            
225 0         0 return VoiceXML::Client::Item::Record->new($xmlElement, $parent);
226             }
227              
228             sub genitem_var {
229 6     6 0 12 my $class = shift;
230 6   50     17 my $xmlElement = shift || return;
231 6         9 my $parent = shift ;
232            
233 6         45 return VoiceXML::Client::Item::Var->new($xmlElement, $parent);
234             }
235              
236             sub genitem_clear {
237 0     0 0 0 my $class = shift;
238 0   0     0 my $xmlElement = shift || return;
239 0         0 my $parent = shift ;
240            
241 0         0 return VoiceXML::Client::Item::Clear->new($xmlElement, $parent);
242             }
243             sub genitem_block {
244 3     3 0 7 my $class = shift;
245 3   50     16 my $xmlElement = shift || return;
246 3         5 my $parent = shift ;
247            
248 3         31 return VoiceXML::Client::Item::Block->new($xmlElement, $parent);
249             }
250              
251             sub genitem_submit {
252 2     2 0 4 my $class = shift;
253 2   50     7 my $xmlElement = shift || return;
254 2         3 my $parent = shift ;
255            
256 2         16 return VoiceXML::Client::Item::Submit->new($xmlElement, $parent);
257             }
258              
259             sub genitem_noinput {
260 2     2 0 4 my $class = shift;
261 2   50     7 my $xmlElement = shift || return;
262 2         4 my $parent = shift ;
263            
264 2         16 return VoiceXML::Client::Item::NoInput->new($xmlElement, $parent);
265             }
266              
267              
268             sub genitem_reprompt {
269 2     2 0 4 my $class = shift;
270 2   50     7 my $xmlElement = shift || return;
271 2         3 my $parent = shift ;
272            
273 2         15 return VoiceXML::Client::Item::Reprompt->new($xmlElement, $parent);
274             }
275              
276             sub genitem_assign {
277 10     10 0 13 my $class = shift;
278 10   50     32 my $xmlElement = shift || return;
279 10         13 my $parent = shift ;
280            
281 10         52 return VoiceXML::Client::Item::Assign->new($xmlElement, $parent);
282             }
283              
284              
285             sub genitem_grammar {
286 0     0 0 0 my $class = shift;
287 0   0     0 my $xmlElement = shift || return;
288 0         0 my $parent = shift ;
289            
290 0         0 return VoiceXML::Client::Item::Grammar->new($xmlElement, $parent);
291             }
292              
293              
294             sub genitem_rule {
295 0     0 0 0 my $class = shift;
296 0   0     0 my $xmlElement = shift || return;
297 0         0 my $parent = shift ;
298            
299 0         0 return VoiceXML::Client::Item::Grammar::Rule->new($xmlElement, $parent);
300             }
301              
302              
303              
304             sub genitem_nomatch {
305 0     0 0 0 my $class = shift;
306 0   0     0 my $xmlElement = shift || return;
307 0         0 my $parent = shift ;
308            
309 0         0 return VoiceXML::Client::Item::NoMatch->new($xmlElement, $parent);
310             }
311              
312              
313             sub genitem_subdialog {
314 1     1 0 2 my $class = shift;
315 1   50     8 my $xmlElement = shift || return;
316 1         2 my $parent = shift ;
317            
318 1         11 return VoiceXML::Client::Item::SubDialog->new($xmlElement, $parent);
319             }
320              
321              
322              
323             sub genitem_return {
324 1     1 0 2 my $class = shift;
325 1   50     5 my $xmlElement = shift || return;
326 1         2 my $parent = shift ;
327            
328 1         12 return VoiceXML::Client::Item::Return->new($xmlElement, $parent);
329             }
330              
331              
332              
333              
334              
335              
336             sub genitem_disconnect {
337 4     4 0 7 my $class = shift;
338 4   50     24 my $xmlElement = shift || return;
339 4         7 my $parent = shift ;
340            
341 4         39 return VoiceXML::Client::Item::Disconnect->new($xmlElement, $parent);
342             }
343              
344              
345             sub genitem_exit {
346 2     2 0 6 my $class = shift;
347 2   50     7 my $xmlElement = shift || return;
348 2         3 my $parent = shift ;
349            
350 2         9 return $class->genitem_disconnect($xmlElement, $parent);
351             }
352              
353              
354              
355             1;