File Coverage

blib/lib/Language/Zcode/Translator.pm
Criterion Covered Total %
statement 21 21 100.0
branch 2 4 50.0
condition n/a
subroutine 6 6 100.0
pod 0 1 0.0
total 29 32 90.6


line stmt bran cond sub pod time code
1             package Language::Zcode::Translator;
2            
3 1     1   778 use strict;
  1         3  
  1         38  
4 1     1   5 use warnings;
  1         1  
  1         35  
5            
6             # XXX For some reason, Constants & Memory aren't getting imported
7             # (But importing %Constants into PlotzParse works!)
8 1     1   475 use Language::Zcode::Util qw(%Constants @Memory);
  1         3  
  1         153  
9 1     1   624 use Language::Zcode::Translator::Generic;
  1         3  
  1         156  
10            
11             =head1 Language::Zcode::Translator
12            
13             This class is just a factory. It figure out which subclass of
14             Language::Zcode::Translator::Generic we want to use. It then
15             loads that class, and creates a translator object of that class.
16            
17             A translator object has methods to translate Z-code into a given language.
18             See L.
19            
20             =cut
21            
22             my %known_languages = map {$_=>1} qw(Perl PIR XML);
23            
24             sub new {
25 1     1 0 16 my ($class, $language, @arg) = @_;
26             # XXX I'll bet there's some fancy way of telling if a class exists.
27             # E.g., test $class->can("new")
28 1 50       6 die"Unknown language $language\n" unless exists $known_languages{$language};
29 1         4 my $new_class = "Language::Zcode::Translator::$language";
30             # Include the necessary translator code or die()
31 1 50   1   3460 eval "use $new_class"; die "$@\n" if $@;
  1         2  
  1         24  
  1         109  
  1         8  
32 1         7 return new $new_class @arg;
33             }
34            
35             1;
36