File Coverage

blib/lib/Lingua/Stem/AutoLoader.pm
Criterion Covered Total %
statement 119 153 77.7
branch 24 60 40.0
condition n/a
subroutine 29 31 93.5
pod n/a
total 172 244 70.4


line stmt bran cond sub pod time code
1             package Lingua::Stem::AutoLoader;
2              
3             =head1 NAME
4              
5             Lingua::Stem::AutoLoader - A manager for autoloading Lingua::Stem modules
6              
7             =head1 SYNOPSIS
8              
9             use Lingua::Stem::AutoLoader;
10              
11             =head1 DESCRIPTION
12              
13             Sets up the autoloader to load the modules in the Lingua::Stem system on demand.
14              
15             Lingua::Stem::Da - Danish
16             Lingua::Stem::De - German
17             Lingua::Stem::En - English
18             Lingua::Stem::Fr - French
19             Lingua::Stem::Gl - Galician
20             Lingua::Stem::It - Italian
21             Lingua::Stem::No - Norwegian
22             Lingua::Stem::Ru - Rusian
23             Lingua::Stem::Pt - Portuguese
24             Lingua::Stem::Sv - Swedish
25              
26             =head1 CHANGES
27              
28             2.31 2020.09.26 - Fix for Latin1/UTF8 issue in documentation
29              
30             2.30 2020.06.20 - Version renumber for module consistency
31              
32             1.03 2004.07.25 - Added 'Lingua::Stem::Ru'
33              
34             1.02 2004.04.26 - Added 'Lingua::Stem::Fr'
35              
36             1.01 2003.04.05 - Added 'Lingua::Stem::De', 'Lingua::Stem::Da',
37             'Lingua::Stem::Gl', 'Lingua::Stem::It',
38             'Lingua::Stem::No', 'Lingua::Stem::Pt',
39             'Lingua::Stem::Sv',
40              
41             to the list of autoloaded modules.
42              
43             =cut
44              
45 2     2   13 use strict;
  2         3  
  2         58  
46 2     2   9 use warnings;
  2         3  
  2         82  
47              
48 2     2   11 use vars qw($VERSION $AUTOLOAD);
  2         4  
  2         450  
49              
50             $VERSION = "2.31";
51              
52             my $_autoloaded_functions = {};
53              
54             my @packageslist = (
55             'Lingua::Stem::De',
56             'Lingua::Stem::En',
57             'Lingua::Stem::Fr',
58             'Lingua::Stem::Da',
59             'Lingua::Stem::Gl',
60             'Lingua::Stem::It',
61             'Lingua::Stem::No',
62             'Lingua::Stem::Pt',
63             'Lingua::Stem::Sv',
64             'Lingua::Stem::EnBroken',
65             );
66              
67             my $autoloader =<<'EOF';
68             package ----packagename----;
69             use vars qw($AUTOLOAD);
70             sub AUTOLOAD {
71             return if ($AUTOLOAD =~ m/::(END|DESTROY)$/o);
72             if (exists $_autoloaded_functions->{$AUTOLOAD}) {
73             die("Attempted to autoload function '$AUTOLOAD' more than once - does it exist?\n");
74             }
75             $_autoloaded_functions->{$AUTOLOAD} = 1;
76             my ($packagename) = $AUTOLOAD =~ m/^(.*)::[A-Z_][A-Z0-9_]*$/ois;
77             eval ("use $packagename;");
78             if ($@ ne '') {
79             die ("Unable to use packagename: $@\n");
80             }
81             goto &$AUTOLOAD;
82             }
83              
84             EOF
85              
86             my $fullload = '';
87             foreach my $packagename (@packageslist) {
88             my ($loader) = $autoloader;
89             $loader =~ s/(----packagename----)/$packagename/;
90             $fullload .= $loader;
91             }
92 2 0   2   13 eval $fullload;
  2 0   2   10  
  2 0   2   521  
  2 50   2   17  
  2 50   2   3  
  2 50   2   510  
  2 50   2   14  
  2 50   2   4  
  2 50   2   485  
  2 0   2   14  
  2 0   2   5  
  2 0   1   474  
  2 50   1   14  
  2 50   1   5  
  2 50   1   491  
  2 50   1   14  
  2 50   1   4  
  2 50   1   468  
  2 50   0   14  
  2 50   1   9  
  2 50   1   502  
  2 50   0   15  
  2 50   1   4  
  2 50   1   443  
  2 50   2   14  
  2 50   1   11  
  2 50   1   475  
  2 50   1   14  
  2 50       4  
  2 50       411  
  2         968  
  2         6  
  2         108  
  1         468  
  1         3  
  1         46  
  1         481  
  1         3  
  1         46  
  1         546  
  1         2939  
  1         48  
  1         509  
  1         4  
  1         47  
  1         563  
  1         4  
  1         47  
  1         477  
  1         4  
  1         46  
  1         433  
  1         3  
  1         49  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  1         9  
  1         5  
  0         0  
  1         2  
  1         7  
  1         94  
  1         7  
  0         0  
  1         6  
  1         9  
  1         3  
  0         0  
  1         3  
  1         6  
  1         68  
  1         6  
  0         0  
  1         6  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  1         10  
  1         4  
  0         0  
  1         3  
  1         6  
  1         103  
  1         7  
  0         0  
  1         7  
  1         10  
  1         4  
  0         0  
  1         2  
  1         6  
  1         71  
  1         6  
  0         0  
  1         8  
  2         16  
  2         8  
  0         0  
  2         7  
  2         11  
  2         161  
  2         12  
  0         0  
  2         13  
  1         18  
  1         4  
  0         0  
  1         2  
  1         4  
  1         56  
  1         6  
  0         0  
  1         5  
  1         9  
  1         3  
  0         0  
  1         3  
  1         7  
  1         70  
  1         7  
  0         0  
  1         5  
  1         11  
  1         4  
  0         0  
  1         3  
  1         6  
  1         75  
  1         7  
  0         0  
  1         5  
93             if ($@ ne '') {
94             die ("Failed to initialize AUTOLOAD: $@\n");
95             }
96              
97             =head1 COPYRIGHT
98              
99             Copyright 1999, Jerilyn Franz and
100             FreeRun Technologies, Inc. (). All Rights Reserved.
101             This software may be copied or redistributed under the same terms as Perl itelf.
102              
103             =head1 AUTHOR
104              
105             Jerilyn Franz
106              
107             =head1 TODO
108              
109             Nothing.
110              
111             =cut
112              
113             1;