File Coverage

blib/lib/Locale/Maketext/Extract/DBI.pm
Criterion Covered Total %
statement 15 35 42.8
branch 0 2 0.0
condition 0 8 0.0
subroutine 5 8 62.5
pod 3 3 100.0
total 23 56 41.0


line stmt bran cond sub pod time code
1             package Locale::Maketext::Extract::DBI;
2            
3 1     1   40965 use strict;
  1         2  
  1         34  
4 1     1   5 use warnings;
  1         2  
  1         24  
5            
6 1     1   3379 use Locale::Maketext::Extract;
  1         11095  
  1         45  
7 1     1   3011 use DBI;
  1         26693  
  1         93  
8 1     1   12 use Cwd;
  1         2  
  1         458  
9            
10             our $VERSION = '0.01';
11            
12             =head1 NAME
13            
14             Locale::Maketext::Extract::DBI - Extract translation keys from a database
15            
16             =head1 SYNOPSIS
17            
18             my $extractor = Locale::Maketext::Extract::DBI->new;
19             $extract->extract( %options );
20            
21             =head1 DESCRIPTION
22            
23             This module extracts translation keys from a database table.
24            
25             =head1 METHODS
26            
27             =head2 new( )
28            
29             Creates a new C instance.
30            
31             =cut
32            
33             sub new {
34 0     0 1   my $class = shift;
35 0           return bless {}, $class;
36             }
37            
38             =head2 extract( %options )
39            
40             The main method for extraction. Take a list of options to pass to
41             C and C.
42            
43             =cut
44            
45             sub extract {
46 0     0 1   my $self = shift;
47 0           my %options = @_;
48            
49 0           my $extractor = Locale::Maketext::Extract->new;
50 0   0       my $output = $options{ o } || ( $options{ d } || 'messages' ) . '.po' ;
51 0           my $cwd = getcwd;
52            
53 0 0 0       $extractor->read_po( $output ) if -r $output and -s _;
54 0           $self->extract_dbi( $extractor, %options );
55 0           $extractor->compile;
56            
57 0   0       chdir( $options{ p } || '.' );
58 0           $extractor->write_po( $output );
59 0           chdir $cwd;
60             }
61            
62             =head2 extract_dbi( $extractor, %options )
63            
64             Connects to the database, runs the query and stuffs the results in to
65             the C<$extractor>.
66            
67             =cut
68            
69             sub extract_dbi {
70 0     0 1   my( $self, $extractor, %options ) = @_;
71            
72 0           my $dbh = DBI->connect( ( map{ $options{ $_ } } qw( dsn username password ) ), { RaiseError => 1 } );
  0            
73 0           my $query = $options{ query };
74            
75 0           my $results = $dbh->selectall_arrayref( $query );
76 0           for( 0..@$results - 1 ) {
77 0           $extractor->add_entry( $results->[ $_ ]->[ 0 ] => [ "dbi:$query", $_ + 1] );
78             }
79             }
80            
81             =head1 AUTHOR
82            
83             =over 4
84            
85             =item * Brian Cassidy Ebricas@cpan.orgE
86            
87             =back
88            
89             =head1 COPYRIGHT AND LICENSE
90            
91             Copyright 2006 by Brian Cassidy
92            
93             This library is free software; you can redistribute it and/or modify
94             it under the same terms as Perl itself.
95            
96             =head1 SEE ALSO
97            
98             =over 4
99            
100             =item * L
101            
102             =back
103            
104             =cut
105            
106             1;